有效地检查字符串是否包含一组单词

Non*_*isi 7 java

假设我有许多单词,例如:(水,面粉,鸡蛋)和(豆类,水,牛奶)

如果用户输入包含任何顺序的所有单词的字符串,则会显示一条消息.比如"我有鸡蛋水和一些面粉" - >"那就是蛋糕".

假设可能有大量的单词集和消息组合要检查用户输入的每个字符串,最有效的方法是什么.

我最初的想法是使用.contains:

for(each-word-set)
{
  i = word-set.length;
  for(each-word)
  {
    if(string.contains(word))
    {
       j++
    }
  }
  if(i == j)
  {
     //Yes this string contains all words.
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有比这更好的方法?

bla*_*sel 0

扩展我的评论。还有一些错误。到目前为止我的最终解决方案是:

public class Someclass {
    public static void main(String[] args) {

        String[] words = { "water", "flour", "eggs", "beans", "water", "milk" };
        String[] testStrings = { "water flour eggs beans water milk", "somewhat else",
                        "wader flour ekks beans water milk" };
        for (String string : testStrings) {
            boolean found = true;
            for (String word : words) {
                if (!string.contains(word)) {
                    found = false;
                    break;
                }
            }
            if (found) {
                System.out.println(string + " - That makes a cake");
            } else {
                System.out.println(string + " - That makes no cake");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)