2016-09-10 266 views
-2

有一个字母池(随机选择),你想用这些字母做一个单词。我发现了一些可以帮助我的代码,但是如果这个词有例如2个L并且池只有1个,我希望程序知道这是什么时候发生的。检查字符串中是否包含一组字符?

+0

由于问题是关于FINDSTR你应该问在SuperUser.com其处理非编程相关问题。 –

回答

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'] 
+0

其实,在重新阅读你的问题时,也许[这](http://stackoverflow.com/questions/8286554/find-anagrams-for-a-list-of-words)是你所要求的。 – Bill

+0

这实际上是类似的东西,但我得到了那部分已经算出out.word =输入(“池:”) 池=输入(“字:”) 我在字[len(word)-1 ]: if i in pool: print(“is”) else: print(“is not”) 如果例如word = CETA和pool = CTAAE,它将打印“is”。但如果单词= CETAAAAA,即使游泳池中没有足够的A,它仍然会打印“是”。那是我的问题。谢谢大声笑我不能理解我输入的内容。 – bajotupie

+0

对不起,它是word = input(“word:”)pool = input(“pool:”) – bajotupie

相关问题