Введение
Анаграмма - это слово или фраза, образованные путём перестановки букв другого слова или фразы. Например, "listen" - анаграмма "silent". В этом испытании вам будет предложено написать функцию, которая проверяет, являются ли две строки анаграммами друг друга.
Анаграмма строки
Напишите функцию is_anagram(s1, s2), которая принимает две строки в качестве аргументов и возвращает True, если они являются анаграммами друг друга, и False в противном случае. Функция должна быть нечувствительной к регистру, игнорировать пробелы, знаки препинания и специальные символы.
Для решения этой проблемы вы можете следовать следующим шагам:
- Используйте
str.isalnum(), чтобы отфильтровать неалфавитно-цифровые символы, иstr.lower(), чтобы преобразовать каждый символ в нижний регистр. - Используйте
collections.Counter, чтобы подсчитать получившиеся символы для каждой строки и сравнить результаты.
from collections import Counter
def is_anagram(s1, s2):
return Counter(
c.lower() for c in s1 if c.isalnum()
) == Counter(
c.lower() for c in s2 if c.isalnum()
)
is_anagram('#anagram', 'Nag a ram!') ## True
Резюме
В этом испытании вы узнали, как проверить, являются ли две строки анаграммами друг друга. Вы использовали str.isalnum(), чтобы отфильтровать неалфавитно-цифровые символы, str.lower(), чтобы преобразовать каждый символ в нижний регистр, и collections.Counter, чтобы подсчитать получившиеся символы для каждой строки и сравнить результаты.