为了提高比较字符串的函数的性能,我决定通过比较哈希值来比较它们。
那么,如果2个非常长的字符串的哈希值彼此相等,那么这些字符串也彼此相等,是否可以保证?
最佳答案
虽然可以保证2个相同的字符串将为您提供相等的哈希值,但反之则不正确:对于给定的哈希值,总是会有多个可能的字符串产生相同的哈希值。
由于PigeonHole principle,这是正确的。
就是说,可以使2个不同字符串产生相同哈希的机会变得无穷小,以至于被认为等同于null。
这种哈希的一个相当经典的例子是MD5,它具有接近完美的128位分布。这意味着您有机会在2 ^ 128中有2个不同的字符串产生相同的哈希值。好吧,基本上,几乎和不可能一样。
关于string - 比较长字符串的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10534937/