C中字符串的哈希函数

Gre*_*lin 0 c java

我想实现一种散列技术,C其中字符串的所有排列都具有相同的散列键.
例如abc,cab两者都应该有相同的键.

我曾经想过加入的ascii价值观和然后检查frequency of characters[重要,否则都abcaad本来这是我们不希望相同的密钥.
但是,它看起来效率不高.

是否有更好的散列函数可以很好地解决冲突并且不会导致稀疏哈希表?

Java [ for strings]在内部使用哪种散列技术,不仅可以最大限度地减少冲突,而且操作[ insertion ,deletion, search]也足够快?

Dav*_*rek 12

为什么不在散列之前对字符串的字符进行排序?

  • 任何处理都至少为O(n)时间.在O(nlogn)时间和O(n)空间中应该可以进行排序.根据性能要求,这些增加可能太多,但它们对我来说似乎并不疯狂. (2认同)