Проверка двух строк на анаграмму
Две строки называются анаграммами, если одну можно получить, переставив буквы другой. Например, «Race» и «Care» — анаграммы: из букв одного слова можно сложить другое.
Что нужно знать
Перед изучением примера полезно понимать:
Python: строки — строки
Оператор if…else в Python — условный оператор
Решение с использованием sorted()
str1 = "Race"
str2 = "Care"
# convert both the strings into lowercase
str1 = str1.lower()
str2 = str2.lower()
# check if length is same
if(len(str1) == len(str2)):
# sort the strings
sorted_str1 = sorted(str1)
sorted_str2 = sorted(str2)
# if sorted char arrays are same
if(sorted_str1 == sorted_str2):
print(str1 + " and " + str2 + " are anagram.")
else:
print(str1 + " and " + str2 + " are not anagram.")
else:
print(str1 + " and " + str2 + " are not anagram.")
Вывод
race and care are anagram.
Как это работает
Сначала обе строки приводятся к нижнему регистру методом lower() — Python считает R и r разными символами, и без этого преобразования сравнение работало бы некорректно.
Далее идея проста: если строки — анаграммы, то после сортировки их букв они должны совпасть. Функция sorted() возвращает отсортированный список символов. Если списки равны — строки анаграммы.
Проверка длины len(str1) == len(str2) — это короткий путь: если длины разные, дальше можно не считать.