我有一个单词列表,这些单词存储在set()中以便快速查找,例如:
one
two
three
我想搜索是否可以通过使用字典中的单词来写给定的字符串(即“一个三”)(这将是一个多词字谜) 实现此目的的第一个想法是创建一个新的单词表,例如:
one
two
three
one two
one three
two three
要查找匹配的字符串,我发现这种方法存在一些缺陷:
最后,提出的解决方案(感谢@all)是拆分多字字符串,并查看每个成员是否在单词列表中。
答案 0 :(得分:3)
如果您的单词是固定的,则查找为固定时间。无需对单词进行所有排列。使用一组单词列表,您可以将字符串拆分成单词,然后检查所有单词是否在该集中:
words = {'one', 'two','three'}
sentence = "one two two three"
all(s in words for s in sentence.split())
# True
sentence = "one two two three four"
all(s in words for s in sentence.split())
# False
答案 1 :(得分:0)
如果将单词的所有组合存储在集合中,则该集合很可能会指数增长,而不会提供太多价值。要检查是否可以使用集合中的单词来制作特定的字符串,我们应该在运行时检查字符串中的每个单词:
def words_in_set(my_str, words_set):
words = my_str.split()
return all(word in words_set for word in words)