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

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

对于用户输入的每个字符串,假设可能要检查大量的单词集和消息组合,那么完成此操作的最有效方法是什么。

我最初的想法是使用.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.
  }
}

有没有比这更好的方法了?

最佳答案

我的初始方式:
使用空格作为分隔符。

我们可以做到以下几点。

脚步

创建一个列表。如下

1)使用Java拆分功能。创建数组。

 List<String> list = new ArrayList<String>(Arrays.asList(string.split(" ")))`;

2)创建一个哈希映射。
Map<String, String> hash = new HashMap<String, String>();
for(i = 0 ; i < list.length(); i++)
{
   hash.put(list[i], list[i]);
}
list[i]将成为您的关键。

3)检索比赛。

现在,当用户输入您感兴趣的单词时,您可以使用containsKey
命令。例如
  if (hash.containsKey("flour") && hash.containsKey("water") && hash.containsKey("beans");

  println("Whatever you want");

需要注意的是创建一个HashTable对大数据集很有用。这是link,您应该看到它的好处。从哈希表检索数据为O(1),因此几乎是瞬时的。

希望这会有所帮助。

关于java - 有效检查字符串是否包含一组单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24581884/

10-09 07:06
查看更多