我试图理解这个问题:
在以下问题中,将字符值取为: 答:0 C:1 G:2 T:3
在文本GATTACA中,使用exclusive计算的哈希值 或者子字符串GAT是1.什么是哈希值 子串ATT?
使用异或,谷歌rabin-karp,没什么。 有人能帮助我理解吗? 非常感谢你答案 0 :(得分:0)
我认为你不应该使用XOR来查找哈希值,经典方法可以提供更好的哈希质量。但是,如果您希望使用滚动哈希值来计算哈希值,则可以执行以下操作:
hash(ATT) = hash(GAT) xor hash(G) xor hash(T).
顺便说一句是0。如果xor两个相同的值,你得0,所以为了摆脱第一个G,你需要用GAT再次xor。
答案 1 :(得分:0)
关于Rabin-Karp的事情非常好,但在这里完全无关紧要。专注于相关部分,即:
A = 0,T = 3
使用简单的ATT
作为哈希函数查找字符串xor
的哈希值。
答案是A xor T xor T = A = 0
。或者,如果您绝对坚持使用滚动哈希函数hash(ATT) = hash(GAT) xor G xor T = 1 xor 2 xor 3 = 0
。