2016-09-10 265 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

相關問題