Проверка анаграмм Python

Проверьте, являются ли две строки анаграммами, сравнив их составы символов в Python.

Попробуйте в редакторе

Обзор

Две строки являются анаграммами, если они содержат одни и те же символы с одинаковой частотой, но расположены в разном порядке (например, «слушай» и «молчи»).

Элегантный способ проверки наличия анаграмм — очистить строки (удалить пробелы и нижний регистр), отсортировать их символы и проверить, идентичны ли отсортированные списки.

Этот подход к сортировке выполняется за время O(k log k), где k — длина строки, оптимальная для проверки коротких текстов.

Код и вывод выполнения

Проверка пар слов на статус анаграммы путем сортировки букв.

def is_anagram(str1, str2):
    s1 = sorted(str1.lower().replace(" ", ""))
    s2 = sorted(str2.lower().replace(" ", ""))
    return s1 == s2

word1, word2 = "listen", "silent"
print(f"Are '{word1}' and '{word2}' anagrams? {is_anagram(word1, word2)}")

word3, word4 = "hello", "world"
print(f"Are '{word3}' and '{word4}' anagrams? {is_anagram(word3, word4)}")
Терминальный выход
Are 'listen' and 'silent' anagrams? True
Are 'hello' and 'world' anagrams? False

Пошаговая реализация

  • Механизмы анализа текста и лингвистического сравнения
  • Разработка струнных головоломок и системы валидации
  • Задачи по кодированию технического интервью

Часто задаваемые вопросы

Есть ли способ решить эту проблему за линейное время O (n)?

Да! Вместо сортировки вы можете подсчитывать частоты букв, используя хэш-карту или Python Collections.Counter, и сравнивать полученные карты частот.

Связанные темы