我想使用"字符,其中顺序无关紧要"作为在Python中构建字典的关键。
喜欢" abc"和" cba"可以给我相同的哈希索引," aab"和" ab"给我不同的哈希指数。
我发现一种方法是使用tuple(sorted(my_string))
来清除一个字符列表,但它可能需要O(NlogN)时间复杂度。
我尝试使用Counter
,但它不可用。 Frozenset
可以删除,但不允许重复。
是否有更好的方法(O(N)时间复杂度)来替换tuple(sorted(my_string))
?
如果上面有错误,请纠正我。谢谢!
答案 0 :(得分:3)
O(N)
您可以获得frozenset(Counter(my_string).items())
时间复杂度。但是,你可能想知道这实际上是否在实践中获胜,因为这段代码的常数因子可能高到超过''.join(sorted(my_string))
的额外对数因子。