搜索段落中的单词列表

时间:2014-09-09 09:27:03

标签: algorithm

我有一段用英文写的。 我有一个单词列表 我想检查段落是否包含任何一个单词
这样做的最佳算法是什么:
目前,我有以下但看起来很天真:

private boolean findMatch(List<String> list, String param, ArrayList<String> skipChars) {
    boolean matchResult = false;

    for (String s : list) {
        if(skipChars == null || !skipChars.contains(s)){
            if (param.indexOf(s) != -1) {
                matchResult = true;
                break;
            }
        }
    }

    return matchResult;
}

}

2 个答案:

答案 0 :(得分:1)

  1. 将段落拆分为wrods,并将它们存储在哈希表中
  2. 现在为列表中的每个单词在哈希中搜索它。
  3. 对于现实生活中的应用程序,这可能会这样做。

    - 编辑 -

    如果您不能将段落分成单词,并且您需要判断段落中是否只有一个单词我建议您从单词列表中构建一个单词,然后查看段落并检查trie中的匹配项去。

答案 1 :(得分:0)

在c#中我通常使用linq实体来查询列表并获得结果。

这是我的代码:

private bool findMatch(List<String> list, String param, List<String> skipChars)
    {

        if (skipChars == null)
            skipChars = new List<string>();

        var c = (from l in list.Except(skipChars)
                 where param.IndexOf(l) != -1
                 select l).Count();

        return c != 0;

    }