Czy to jest palindrom?

Palindromy to wyrazy, liczby lub ciągi znaków, które czytane od przodu i od tyłu brzmią tak samo. Przykłady to „kajak”, „anna”, czy zdanie „Kobyła ma mały bok”. W programowaniu, szczególnie w Pythonie, sprawdzenie, czy dany ciąg jest palindromem, jest klasycznym zadaniem, które doskonale ilustruje operacje na stringach oraz algorytmy.

Podstawowe podejście

Najprostszy sposób na sprawdzenie palindromu w Pythonie to porównanie ciągu z jego odwróconą wersją.



Funkcja czy_palindrom działa w następujący sposób:

  1. Konwertuje tekst na małe litery za pomocą lower()

  2. Usuwa spacje przy użyciu replace(" ", "")

  3. Porównuje oryginalny tekst z jego odwróceniem (tekst[::-1])

Bardziej zaawansowane podejście

W praktyce palindromy mogą zawierać znaki interpunkcyjne, które powinny być ignorowane. Rozszerzmy naszą funkcję:


Wersja z użyciem wyrażeń regularnych

Dla bardziej zaawansowanego czyszczenia tekstu możemy użyć modułu re:

Wersja iteracyjna

Możemy też sprawdzać palindrom za pomocą pętli, co jest bardziej wydajne pamięciowo dla bardzo długich ciągów:



Testowanie różnych przypadków

Przetestujmy nasze funkcje na różnorodnych przykładach:



Rozszerzenie: Palindromy liczbowe

Palindromy mogą dotyczyć również liczb:



Złożoność algorytmu

Analizując efektywność naszych rozwiązań:

  • Wersja z tekst == tekst[::-1] ma złożoność czasową O(n) i pamięciową O(n)

  • Wersja iteracyjna ma złożoność czasową O(n) i pamięciową O(1) (nie tworzy odwróconej kopii)

Podsumowanie

Python oferuje wiele eleganckich sposobów na sprawdzenie, czy ciąg znaków jest palindromem. Dzięki swojej prostocie i czytelności, Python jest doskonałym językiem do implementacji tego typu algorytmów. Wybór konkretnego podejścia zależy od:

  1. Wymagań dotyczących obsługi znaków specjalnych

  2. Wydajności (dla bardzo długich ciągów)

  3. Konkretnego przypadku użycia

Palindromy to nie tylko ciekawostka językowa, ale także doskonały przykład problemu algorytmicznego, który pozwala zilustrować różne techniki programistyczne w Pythonie.

Materiały dodatkowe: https://pl.wikipedia.org/wiki/Palindrom

Was this helpful?

0 / 0