Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าสตริงมี prefix และ suffix เป็นพาลินโดรมหรือไม่ ใน Python


ปัญหา

ให้สตริง s ตรวจสอบว่ามี prefix (ยาว ≥ 2) เป็นพาลินโดรม และ suffix (ยาว ≥ 2) เป็นพาลินโดรม หรือไม่

ตัวอย่าง

s = "levelishighforracecar" → prefix "level" (พาลินโดรม), suffix "racecar" (พาลินโดรม) → True

แนวคิดการแก้ปัญหา

  1. หา prefix พาลินโดรมแรก (ความยาว ≥ 2)
  2. หา suffix พาลินโดรมแรก (ความยาว ≥ 2)
  3. ถ้าทั้งคู่มี → True

โค้ดตัวอย่าง

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

def solve(s):
    n = len(s)
    # หา prefix palindrome
    prefix_found = False
    for i in range(2, n + 1):
        if is_palindrome(s[:i]):
            prefix_found = True
            break
    if not prefix_found:
        return False
    # หา suffix palindrome
    for i in range(2, n + 1):
        if is_palindrome(s[n-i:]):
            return True
    return False

print(solve("levelishighforracecar"))  # True

อินพุต / เอาต์พุต

Input:  "levelishighforracecar"
Output: True