Sprawdzanie anagramów w Pythonie

Sprawdź, czy dwa ciągi znaków są anagramami, porównując ich kompozycje znaków w Pythonie.

Spróbuj w Edytorze

Przegląd

Dwa ciągi znaków są anagramami, jeśli zawierają te same znaki z identyczną częstotliwością, chociaż ułożone w innej kolejności (np. „słuchaj” i „cicho”).

Eleganckim sposobem sprawdzenia anagramów jest wyczyszczenie ciągów znaków (usunięcie białych znaków i małych liter), posortowanie ich znaków i sprawdzenie, czy posortowane listy są identyczne.

To podejście do sortowania jest wykonywane w czasie O(k log k), gdzie k jest długością łańcucha, która jest optymalna w przypadku sprawdzania krótkich tekstów.

Dane wyjściowe kodu i wykonania

Sprawdzanie par słów pod kątem statusu anagramu poprzez sortowanie liter.

def is_anagram(str1, str2):
    s1 = sorted(str1.lower().replace(" ", ""))
    s2 = sorted(str2.lower().replace(" ", ""))
    return s1 == s2

word1, word2 = "listen", "silent"
print(f"Are '{word1}' and '{word2}' anagrams? {is_anagram(word1, word2)}")

word3, word4 = "hello", "world"
print(f"Are '{word3}' and '{word4}' anagrams? {is_anagram(word3, word4)}")
Wyjście terminala
Are 'listen' and 'silent' anagrams? True
Are 'hello' and 'world' anagrams? False

Wdrażanie krok po kroku

  • Analiza tekstu i porównywarki językowe
  • Projektowanie puzzli sznurkowych i systemy sprawdzania poprawności
  • Zadania kodowania wywiadu technicznego

Często zadawane pytania

Czy istnieje sposób rozwiązania tego problemu w czasie liniowym O(n)?

Tak! Zamiast sortować, możesz policzyć częstotliwości liter za pomocą mapy skrótów lub `collections.Counter' Pythona i porównać powstałe mapy częstotliwości.

Powiązane tematy