Рубрики
Без рубрики

Анаграммы в Python: простое решение однонаправления

Забудьте обо всех сложных фрагментах кода, которые вы найдете в Интернете. Это легко!

Автор оригинала: Chris.

sorted("elvis") == sorted("lives")

Популярный вопрос в программировании интервью о анаграммах. Интервьюер хочет проверить свои знания о базовой терминологии в информатике, и насколько хороши вы находитесь в разработке своих собственных простых алгоритмов для решения проблем, которые вы сталкиваетесь. В этой статье вы узнаете о простом алгоритме, чтобы найти анаграммы в Python.

Большинство студентов, которые преследовали академическое образование в информатике, точно знают, что здесь делать. При наличии в кодирующем интервью, этот вопрос служит тестом, который немедленно раскрывает, являются ли вы частью этого сообщества. Итак, давайте подготовимся!

Что такое анаграммы? Два слова являются анаграммы, если они состоят из тех же символов.

«Анаграмма – это слово или фраза, образованные путем переустройства букв другого слова или фразы, как правило, используя все оригинальные буквы ровно один раз». [1]

Вот несколько примеров:

  • «Слушай» → «молчать»
  • «Похороны» → «Реальное веселье»
  • «Элвис» → «Живет»

Рисунок 8-1: Слово «Элвис» – это анаграмма слова «жизни».

Хорошо, теперь вы точно знаете, что делать, верно? Итак, давайте начнем кодировать.

Код

Данные два строки x1 и x2. Написать функцию IS_Anagram, которая возвращает True, если строка X2 Anagram строки x1!

## One-Liner
is_anagram = lambda x1, x2: sorted(x1) == sorted(x2)


## Results
print(is_anagram("elvis", "lives"))
print(is_anagram("elvise", "livees"))
print(is_anagram("elvis", "dead"))

Листинг 8-1: одноклассное решение для проверки того, являются ли строки Anagrams.

Прежде чем читать: Какая вывод этого кода фрагмент?

Как это устроено

Однопроизводитель решает проблему эффективно и правильно. Две строки – это анаграммы, если у них такая же соисканная последовательность символов. Это так просто. Нет необходимости в внешних зависимостях – мы просто создаем функцию IS_Anagram в одной строке кода, используя определение функции Lambda с двумя аргументами x1 и x2. Функция просто возвращает результат отсортированного выражения (x1) (x2), который верно, если в сортировке последовательности символов состоят из тех же символов. Вот выход двух сортированных последовательностей символов:

print(sorted("elvis"))
# ['e', 'i', 'l', 's', 'v']

print(sorted("lives"))
# ['e', 'i', 'l', 's', 'v']

Оба строки « elvis » и «жизнь» состоит из тех же символов, поэтому представление отсортированного списка одинаково. Таким образом, результат трех операторов печати в фрагменте кода один вкладыш следующий:

## Results
print(is_anagram("elvis", "lives")) # True
print(is_anagram("elvise", "livees")) # True
print(is_anagram("elvis", "dead")) # False

Куда пойти отсюда?

Эта статья дала вам самый простой способ найти анаграммы в Python. Нет простых способов – гарантировано.

Если вы чувствуете, что вы должны стать лучше в Python, но вы не знаете, как и немного времени, проверьте мою ежедневную серию электронной почты «Coffee Break Python» с бесплатными чит-листами Python. Это весело!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.