我需要在C++中使用unordered_map<string, int>
的散列函数。我需要根据内容对密钥进行散列处理,但不应取决于内容的顺序。关于忽略字符排序的字符串散列函数的建议
例如,在我的地图中,键是字符串,我需要“ac”,“ca”来生成相同的散列值,但“bb”应该生成不同的散列值。
我试着总结字符串的内容,但我意识到在这种情况下,“ac”和“bb”会生成相同的散列值。
还有类似的问题Does a string hash exist which can ignore the order of chars in this string,但那还没有被回答。
在对它们进行散列操作之前对它们进行排序。这意味着你对'ac'和'ca'都加上'ac',这样它们就可以根据需要哈希到相同的值,但'bb'(大概)会散列到不同的值。 – 2015-03-08 21:15:17
^他打算说“排序字符串中的字符”。 – 2015-03-08 21:20:20
是的。排序他们现在工作。但是如果有一个线性时间散列函数而没有任何额外的内存来完成这个任务,那将会很棒 – Anoop 2015-03-08 21:23:46