假设我有很多单词,例如:(水,面粉,鸡蛋)和( 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/