ПредишенСледващото

Проверете анаграми

По това време, ние ще проучи проблема "Проверка анаграми» ( «Проверете анаграми»).

Ние вече писа за този проблем и преди. но сега ще ви разкажа за него малко по-различен начин.

Анаграма - игра с думи, като резултат от пермутацията от букви думи или фрази получите друга дума или фраза. Две думи са анаграми, ако можем да вземем един от другите места пренареждащи букви. Като се има предвид две думи или фрази, както и вашата задача - да се провери дали те са анаграми.

Ние вярваме, буквите

Така че, ние трябва да се сравняват двете фрази. Първо, имаме нужда от тях, за да "лекува": изберете Само писма и да ги конвертирате в малки букви. Също така, на този етап можем да конвертирате низ в масив. Управлявана тази процедура в отделна функция.

Или, ако сте спестяване на паметта и предпочитам генератори:

Или като функционално програмиране стил:

На следващо място, ние трябва да брои всяка буква в текста, а ако количествените характеристики на сканираните думи / фрази съвпадат, те са анаграми. Да предположим, че ние използваме само английски букви. След това можем да използваме масив от 26 елементи на сметките.

Честно казано, това прилича на код написан на C, но не и в Python. В допълнение, ние са прикрепени неподвижно към английската азбука. Нека да замени списъка на речника (речник).

По-добре, но добре познат Python мото казва - "включени батерии". И Counter клас дава възможност за просто да разчита на буквите в текста.

Мисля, че можете да видите за себе си, че нашата отделна функция вече не count_letters така е необходимо, и окончателното решение може да се запише като:

Ние сортирате всичко

Когато реших за първи път този проблем, аз не използват тезгяха. Вместо това, аз трябва да конвертирате текст в универсален форма за пермутации. Разбира се, аз говоря за един подреден начин. Ако сортирате редовете и сравни тях, е по същество същата като на броя на елементите на масив. И, както е в нашия проблем текст съдържа само букви и пространства, можете да използвате един трик:

Както можете да видите, ние имаме едно движение може да конвертира тази функция в една фраза, която (за забавление):

Ето една история за анаграми.

CheckiO Благодаря за интересната задача.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!