有一个字母池(随机选择),你想用这些字母做一个单词。我找到了一些可以帮助我解决这个问题的代码,但是如果这个单词有例如2个L而且池只有1个,我希望程序能够知道这种情况何时发生。
答案 0 :(得分:0)
如果我理解正确,您还需要使用您使用的任何语言的所有有效单词的列表。
假设你有这个,那么解决这个问题的一个策略可能是为字典中的每个单词生成一个键,该单词是该单词中字母的排序列表。然后,您可以通过这些键对字典中的所有单词进行分组。
然后,找出是否可以从给定的随机字符列表构造有效单词的任务将非常简单快捷。
以下是我建议的简单实现:
list_of_all_valid_words = ['this', 'pot', 'is', 'not', 'on', 'top']
def make_key(word):
return "".join(sorted(word))
lookup_dictionary = {}
for word in list_of_all_valid_words:
key = make_key(word)
lookup_dictionary[key] = lookup_dictionary.get(key, set()).union(set([word]))
def words_from_chars(s):
return list(lookup_dictionary.get(make_key(s), set()))
print words_from_chars('xyz')
print words_from_chars('htsi')
print words_from_chars('otp')
输出:
[]
['this']
['pot', 'top']