Проверка двух строк на анаграмму

Две строки называются анаграммами, если одну можно получить, переставив буквы другой. Например, «Race» и «Care» — анаграммы: из букв одного слова можно сложить другое.

Что нужно знать

Перед изучением примера полезно понимать:

Решение с использованием 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) — это короткий путь: если длины разные, дальше можно не считать.