我想检查字符串A是否只是字符串B的重新排序版本。例如;abc〃="bca〃="驾驶室";。。。
这里还有其他解决方案:https://www.geeksforgeeks.org/check-if-two-strings-are-permutation-of-each-other/
然而,我认为哈希函数是一种简单的方法,但典型的哈希函数会考虑顺序。是否存在不关心字符顺序的哈希函数?
是否有不关心字符顺序的哈希函数?
我不知道现实世界中有多少哈希函数具有这个属性,没有。因为这不是它们设计用来解决的问题。
然而,在这种特定情况下,您可以制作自己的"hash";函数(一个非常非常糟糕的函数(,它确实会忽略顺序:只对字符的ASCII代码求和。这是由于加法(a + b == b + a
(的交换性质
def isAnagram(self,a,b):
sum_a = 0
sum_b = 0
for c in a:
sum_a += ord(c)
for c in b:
sum_b += ord(c)
return sum_a == sum_b
重申一下,这绝对是一次黑客攻击,因为输入字符串在判断系统中的内容有限(只有小写ASCII字符,不包含空格(,所以才会起作用。它不会(可靠地(在任意字符串上工作。
为了进行快速检查,您可以使用一种af散列放克
候选人是:
- xor字符串的所有字符
- 添加字符串的所有字符
- 将字符串的所有字符相乘(小心可能会导致大型字符串溢出(
如果哈希值相等,则仍然可能是两个不"相等"的字符串的冲突。因此,您仍然需要进行专门的比较。(例如,对每个字符串的字符进行排序,然后再进行比较(。