Программа курса:
Разбор задачи: Валидная анаграмма
Предложенный нами код решения:
def is_anagram(s, t):
"""
Проверяет, является ли строка t анаграммой строки s.
:param s: строка s
:param t: строка t
:return: True, если t является анаграммой s, иначе False
"""
# Если длины строк не равны, они не могут быть анаграммами
if len(s) != len(t):
return False
# Сортируем обе строки и сравниваем
return sorted(s) == sorted(t)Шаг 1: Проверка длины строк
if len(s) != len(t):
return False
Прежде чем приступить к более сложным операциям, мы сначала проверяем длины строк s и t. Если длины этих строк различны, то они не могут быть анаграммами, так как для того, чтобы строки были анаграммами, они должны состоять из одинакового числа символов. В случае, если длины строк не равны, функция сразу возвращает False.
Шаг 2: Сортировка строк
return sorted(s) == sorted(t)
Затем мы сортируем обе строки с помощью функции sorted(). Эта функция возвращает отсортированный список символов строки. Если строки являются анаграммами, то после сортировки их символы будут в одном и том же порядке.
- Почему сортировка решает задачу? Анаграмма — это просто перестановка символов. Поэтому если отсортированные строки идентичны, значит, одна строка является перестановкой другой, и они являются анаграммами.
Если отсортированные строки совпадают, то функция возвращает True, что подтверждает, что строки являются анаграммами. В противном случае возвращается False.
Пример:
Пример 1:
s = "listen" t = "silent"- После сортировки
sorted(s)иsorted(t)будут равны:['e', 'i', 'l', 'n', 's', 't']. - Результат:
True, так как строки являются анаграммами.
- После сортировки
Пример 2:
s = "rat" t = "car"- После сортировки
sorted(s)будет['a', 'r', 't'], аsorted(t)—['a', 'c', 'r']. - Результат:
False, так как отсортированные строки не совпадают.
- После сортировки