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

На самом деле это что-то вроде этого, но я понял, что эта часть уже вычислена .word = input ("pool:") pool = input ("word:") для i в слове [len (word) -1 ]: Если я в бассейне: print ("is") else: print ("is not") Если, например, слово = CETA и pool = CTAAE, оно будет печатать "is". Но если слово = CETAAAAA, оно все равно будет напечатано «is», хотя в пуле достаточно A. Это моя проблема. спасибо, я не могу понять, что я набрал. – bajotupie

+0

Извините, это слово = input ("word:") pool = input ("pool:") – bajotupie