python - 我可以在 Python 中用什么替换 tuple(sorted(my_string))?

标签 python algorithm sorting data-structures set

我想使用诸如“顺序无关紧要的字符”之类的东西作为在 Python 中构建字典的键。

像“abc”和“cba”可以给我相同的哈希索引,而“aab”和“ab”可以给我不同的哈希索引。

我发现一种方法是使用 tuple(sorted(my_string)) 对字符列表进行哈希处理,但这可能需要 O(NlogN) 时间复杂度。

我尝试使用 Counter,但它不可哈希。 Frozenset 是可散列的,但它不允许重复。

是否有更好的方法(O(N) 时间复杂度)来替换 tuple(sorted(my_string))

如有错误请指正。谢谢!

最佳答案

您可以使用 frozenset(Counter(my_string).items()) 获得 O(N) 时间复杂度。不过,您可能想计算这在实践中是否真的获胜,因为此代码的常数因子可能高到足以超过 ''.join(sorted(my_string)) 的额外对数因子。

关于python - 我可以在 Python 中用什么替换 tuple(sorted(my_string))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688668/

相关文章:

python - OpenCV Python 单个(而不是多个)blob 跟踪?

python - 从Python中的数据帧形成所有可能的路径(列表/字典)

python - 从一个 python 文件调用多个绘图函数时出现问题

arrays - 如何在两个数组中查找倒序对?

C# 算法代码未通过测试用例

python - 在多处理期间保持统一计数?

algorithm - 会聚迷宫 : Largest cycle

java - 在 Java 中通过多个比较器对列表进行排序的有效方法

node.js - Node INTL 语言环境排序规则

Java:比较两个类列表,无论顺序如何