data-structures - 从字典中获取字谜列表

标签 data-structures hash anagram

基本上,字谜就像字符串的排列。例如 stack , sackt , stakc都是stack的字谜(认为​​上面的话没有意义)。无论如何,您可能已经理解我的基本意思了。

现在,我想要一个 anagrams 的列表给出一百万个单词或简单地从字典中说出来。

我的基本问题是 Find total number of unique anagrams in a dictionary?
排序和比较
不会工作,因为它的时间复杂度很糟糕。

我想到了使用哈希表,字符串作为键。

但问题是散列函数应该是什么?如果一些伪代码会有所帮助
假如。一些比上述方法更好的其他方法也会有所帮助。

谢谢。

最佳答案

显而易见的解决方案是将每个字符映射到一个素数,然后将这些素数相乘。所以如果 'a'' -> 2 和 'b' -> 3,那么

  • 'ab' -> 6
  • '巴' -> 6
  • 'bab' -> 18
  • '阿爸' -> 36
  • '爸爸' -> 36

  • 为了尽量减少溢出的可能性,可以将最小的素数分配给更频繁的字母 (e,t,i,a,n)。注意:第 26 个素数是 101。

    更新:
    an implementation can be found here

    关于data-structures - 从字典中获取字谜列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11108541/

    相关文章:

    java - 通过大量键值对进行过滤和排序(java)

    ruby-on-rails - Ruby Hash.merge 仅具有指定的键

    perl - 是否有复合哈希的 Hash::Util 替代方案?

    html - 检查两个字符串在 JavaScript 中是否是彼此的变位词。这里使用了什么逻辑?

    java - 有效的字谜代码 - 32 例中有 1 例失败。 31例合格

    algorithm - 具有此期望输出的算法的运行时间顺序是什么?

    javascript - 在 Socket.io 服务器中累积每个客户端的消息

    javascript - 字符串数组中的制表符补全

    ruby - 如何更改哈希值?