gpt4 book ai didi

c# - 在 C# 中生成下一个可用的唯一名称

转载 作者:太空狗 更新时间:2023-10-29 22:06:00 26 4
gpt4 key购买 nike

如果您的应用程序中有一个命名系统,其中应用程序包含 100 个创建新对象的操作,例如:

Blur
Sharpen
Contrast
Darken
Matte
...

每次您使用其中一个时,都会创建一个具有唯一可编辑名称的新实例,例如 Blur01Blur02Blur03Sharpen01Matte01 等。您将如何生成下一个可用的唯一名称,以便它是 O(1) 操作或接近恒定时间。请记住,用户还可以将名称更改为自定义名称,例如 RemoveFaceDetails 等。

有一些限制是可以接受的,比如限制字符数为100个,使用字母、数字、下划线等...

编辑:您也可以在不“填补空白”的情况下提出解决方案,即不重复使用已经使用但已删除的名称,当然自定义名称除外。

最佳答案

我建议您引用 Michael A. Jackson 的 Two Rules of Program Optimization :

  1. 不要这样做。
  2. 仅供专家使用:先不要这样做。

简单、可维护的代码远比针对您认为以后可能遇到的速度问题进行优化重要得多。

我会从简单开始:构建一个候选名称(例如“Sharpen01”),然后遍历现有过滤器以查看该名称是否存在。如果是,请递增并重试。这是 O(N2),但在您获得数千个过滤器之前,这就足够了。

如果稍后,O(N2) 确实成为一个问题,那么我将从构建现有名称的 HashSet 开始。然后您可以根据 HashSet 检查每个候选名称,而不是迭代。每次需要一个唯一的名字时重建 HashSet,然后扔掉;面对变化,您不需要维护它的复杂性。这将使您的代码易于维护,同时仅为 O(N)。

O(N) 就足够了。你不需要 O(1)。用户不会点击“锐化”足够多的次数来产生任何差异。

关于c# - 在 C# 中生成下一个可用的唯一名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com