Проверка анаграмм: Питоновский вызов

Beginner

This tutorial is from open-source community. Access the source code

Введение

Анаграмма - это слово или фраза, образованные путём перестановки букв другого слова или фразы. Например, "listen" - анаграмма "silent". В этом испытании вам будет предложено написать функцию, которая проверяет, являются ли две строки анаграммами друг друга.

Анаграмма строки

Напишите функцию is_anagram(s1, s2), которая принимает две строки в качестве аргументов и возвращает True, если они являются анаграммами друг друга, и False в противном случае. Функция должна быть нечувствительной к регистру, игнорировать пробелы, знаки препинания и специальные символы.

Для решения этой проблемы вы можете следовать следующим шагам:

  1. Используйте str.isalnum(), чтобы отфильтровать неалфавитно-цифровые символы, и str.lower(), чтобы преобразовать каждый символ в нижний регистр.
  2. Используйте 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, чтобы подсчитать получившиеся символы для каждой строки и сравнить результаты.