Top.Mail.Ru
Ответы

Существует ли алгоритм для решения анаграмм?

Все как-то по наитию, получается может есть правила

По дате
По рейтингу
Аватар пользователя
Новичок

Да, существует несколько способов решения анаграмм. Один из способов - это сортировка букв в каждом слове, а затем сравнение сортированных версий слов. Например:
def is_anagram(word1, word2):
return sorted(word1) == sorted(word2)
Этот алгоритм работает за O(n * log n) времени, где n - длина слова.

Другой способ - это использование хэш-таблицы или счетчика символов. Для каждого слова создается словарь, в котором ключами являются символы, а значениями - их количество. Затем словари сравниваются. Например:
def is_anagram(word1, word2):
char_count1 = {}
char_count2 = {}

for char in word1:
if char in char_count1:
char_count1[char] += 1
else:
char_count1[char] = 1

for char in word2:
if char in char_count2:
char_count2[char] += 1
else:
char_count2[char] = 1

return char_count1 == char_count2
Этот алгоритм работает за O(n) времени, где n - длина слова.