基本上,字谜就像字符串的排列。例如 stack
, sackt
, stakc
都是stack
的字谜(认为上面的话没有意义)。无论如何,您可能已经理解我的基本意思了。
现在,我想要一个 anagrams
的列表给出一百万个单词或简单地从字典中说出来。
我的基本问题是 Find total number of unique anagrams in a dictionary?
排序和比较
不会工作,因为它的时间复杂度很糟糕。
我想到了使用哈希表,字符串作为键。
但问题是散列函数应该是什么?如果一些伪代码会有所帮助
假如。一些比上述方法更好的其他方法也会有所帮助。
谢谢。
最佳答案
显而易见的解决方案是将每个字符映射到一个素数,然后将这些素数相乘。所以如果 'a'' -> 2 和 'b' -> 3,那么
为了尽量减少溢出的可能性,可以将最小的素数分配给更频繁的字母 (e,t,i,a,n)。注意:第 26 个素数是 101。
更新:
an implementation can be found here
关于data-structures - 从字典中获取字谜列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11108541/