Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra chuỗi đối xứng (Palindrome) trong Python

Chuỗi đối xứng (palindrome) đọc từ trái sang phải và phải sang trái giống nhau. Ví dụ: "madam", "racecar", "level".

Cách 1: Slicing (Pythonic, ngắn gọn)

def is_palindrome(s):
    return s == s[::-1]

# Test
tests = ["madam", "python", "racecar", "A man a plan a canal Panama"]
for t in tests:
    # Chuẩn hóa: bỏ space, lowercase
    clean = ''.join(c.lower() for c in t if c.isalnum())
    print(f"'{t}' → {is_palindrome(clean)}")

Kết quả

'madam' → True
'python' → False
'racecar' → True
'A man a plan a canal Panama' → True

Cách 2: Two pointers (tiết kiệm bộ nhớ)

def is_palindrome_two_ptr(s):
    left, right = 0, len(s) - 1
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1
        right -= 1
    return True

Cách 3: Đệ quy

def is_palindrome_recursive(s):
    if len(s) <= 1:
        return True
    if s[0] != s[-1]:
        return False
    return is_palindrome_recursive(s[1:-1])

So sánh

Phương phápThời gianKhông gianĐặc điểm
Slicing [::-1]O(n)O(n)Ngắn gọn, Pythonic
Two pointersO(n)O(1)Tiết kiệm memory
Đệ quyO(n)O(n)Stack overflow nếu n lớn

Ứng dụng mở rộng

  • Kiểm tra số palindrome: str(n) == str(n)[::-1].
  • Tìm palindrome con dài nhất (Manacher's algorithm O(n)).
  • Bioinformatics: palindrome DNA sequence.