gpt4 book ai didi

java - 如何检查字符串是否包含列表中的子字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:31 25 4
gpt4 key购买 nike

我正在寻找检查字符串是否包含关键字列表中的子字符串的最佳方法。

例如,我创建了一个这样的列表:

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 是否为此提供了任何内置方法。

最佳答案

我建议遍历整个列表。值得庆幸的是,您可以使用增强的 for 循环:

for(String listItem : myArrayList){
if(myString.contains(listItem)){
// do something.
}
}

编辑所知,您必须以某种方式迭代列表。想一想,不遍历怎么知道列表中有哪些元素呢?

编辑 2

我可以看到迭代快速运行的唯一方法是执行上述操作。按照这种设计方式,一旦找到匹配项,它就会提前中断,而无需进一步搜索。您可以将您的 return false 语句放在循环的末尾,因为如果您检查了整个列表但没有找到匹配项,显然没有匹配项。下面是一些更详细的代码:

public boolean containsAKeyword(String myString, List<String> keywords){
for(String keyword : keywords){
if(myString.contains(keyword)){
return true;
}
}
return false; // Never found match.
}

编辑 3

如果您使用的是 Kotlin,则可以使用 any 方法执行此操作:

val containsKeyword = myArrayList.any { it.contains("keyword") }

关于java - 如何检查字符串是否包含列表中的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27110563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com