【发布时间】:2015-01-22 12:04:39
【问题描述】:
我正在寻找检查字符串是否包含关键字列表中的子字符串的最佳方法。
例如,我创建一个这样的列表:
List<String> keywords = new ArrayList<>();
keywords.add("mary");
keywords.add("lamb");
String s1 = "mary is a good girl";
String s2 = "she likes travelling";
字符串 s1 有关键字中的“mary”,但字符串 s2 没有。所以,我想定义一个方法:
boolean containsAKeyword(String str, List<String> keywords)
containsAKeyword(s1, keywords) 将返回 true,而 containsAKeyword(s2, keywords) 将返回 false。即使只有一个子字符串匹配,我也可以返回 true。
我知道我可以遍历关键字列表并在列表中的每个项目上调用 str.contains(),但我想知道是否有更好的方法来遍历完整列表(避免 O(n) 复杂性) 或者 Java 是否为此提供了任何内置方法。
【问题讨论】:
-
您可以在此处找到可以在字符串上调用的方法:docs.oracle.com/javase/7/docs/api/java/lang/String.html 我发现查看
String类中的方法定义的所有标准功能非常有帮助。 -
一个重要的评论:想象
keywords.add("travel"),是你的函数的结果,第二个短语是true(事实上它只是一个单词的一部分就足够了)或false(只有完整的单词需要验证)。