gpt4 book ai didi

java - 使用 equals() 查看字符串是否具有 LinkedList 中提供的关键字

转载 作者:行者123 更新时间:2023-12-01 17:41:05 26 4
gpt4 key购买 nike

鉴于这种情况,我想查看字符串是否包含所有给定的关键字,至少一次/单词。我的 for 循环似乎没有做到这一点,所以我很感兴趣是否有另一种方法来尝试解决该问题。

LinkedList<String> keyWords = new LinkedList<String>();
keyWords.add("amet");
keyWords.add("eiusmod");

String toCheck = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";

String[] toCheckWords = toCheck.split(" ");

for (int i=0; i<toCheckWords.length(); i++) {
if (keyWords.get(i).equals(toCheckWords[i])
return true;
}
return false;

预期返回 true

最佳答案

toCheck 句子拆分为单词后,将它们存储在 Set 中,因为您的目标是检查句子是否包含关键字

  • 无论顺序如何,
  • 无论重复次数多少(只要它存在一次)。

由于集合针对 contains 方法进行了优化(对于 HashSet contains 时间复杂度接近 O(1)),因此对于这种情况来说,它看起来是有效的选择。

此外Set还提供Set#containsAll​(Collection)方法,并且由于 LinkedList 是一个 Collection 我们可以像

一样使用它

所以你的代码可以是这样的:

LinkedList<String> keyWords = new LinkedList<String>();
keyWords.add("amet");
keyWords.add("eiusmod");

String sentence = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
Set<String> wordsInSentence = new HashSet<>(List.of(sentence.trim().split("[ ,.!?]+")));

boolean result = wordsInSentence.containsAll(keyWords);

关于java - 使用 equals() 查看字符串是否具有 LinkedList 中提供的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61258539/

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