Sprawdzanie anagramów w Pythonie
Sprawdź, czy dwa ciągi znaków są anagramami, porównując ich kompozycje znaków w Pythonie.
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)}")Are 'listen' and 'silent' anagrams? True
Are 'hello' and 'world' anagrams? FalseWdraż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.