【问题标题】:JavaScript algorithm to match words in a dictionary用于匹配字典中单词的 JavaScript 算法
【发布时间】:2011-07-24 19:49:29
【问题描述】:

我有一个包含几千个单词的数组。我的网页上有一个输入字段,允许用户输入几个字母,然后点击搜索。当用户点击搜索时,应用程序应该查看字典并查看可以从提供的字母中形成哪些单词。每个字母只能使用一次(如在 scrabble 中)。

是否已经有一个搜索库可以做这样的事情?如果没有必要,我不想重新发明轮子。如果没有,是否有人对高性能解决方案有想法。我想这在以前已经做过数百万次了。

【问题讨论】:

    标签: javascript algorithm full-text-search anagram


    【解决方案1】:

    以 jQuery 闻名的 John Resig 也一直在思考这个问题:

    http://ejohn.org/blog/dictionary-lookups-in-javascript/

    【讨论】:

      【解决方案2】:

      Steve Hanov 也为此写了一些文章:

      http://stevehanov.ca/blog/index.php?id=120

      【讨论】:

        【解决方案3】:

        您需要做的是转换哈希表中的单词数组,其中键是排序的每个单词的字母。例如:

        ['car', 'shoe', 'train']
        => {'acr': ['car'],
             'ehos': ['shoe'],
             'ainrt': ['train']}
        

        然后您获取用户的字母,对它们进行排序,然后使用排序后的字母作为键进行哈希表(任何字典 impl 都可以,但哈希表在这种情况下最有效)查找。与您的键对应的列表是您可以使用这些字母执行的单词列表。这样做的好处是时间复杂度为 O(n) = 1。

        【讨论】:

        • 我真的很喜欢这种方法的想法,但是当您还允许使用所提供字母的子集时,您有什么建议吗?例如。字母“c”、“a”、“r”和“s”可以拼写“car”和“cars”。
        • 然后,您可能需要尝试:en.wikipedia.org/wiki/Trie,尽管我不确定这是否在任何 js 库中实现
        猜你喜欢
        • 2017-10-09
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 2021-08-18
        • 2012-07-28
        • 1970-01-01
        • 2014-07-10
        相关资源
        最近更新 更多