กำหนดสตริง งานคือตรวจสอบว่าสตริงนี้เป็น palindrome หรือไม่ (อ่านจากหน้าหลังได้เหมือนกัน)
อัลกอริทึม
- รับสตริงเข้ามา
- ใช้ string slicing
[::-1]กลับสตริง และเปรียบเทียบกับต้นฉบับ - แสดงผล
โค้ดตัวอย่าง
my_string = input("Enter string: ")
if my_string == my_string[::-1]:
print("The string is a palindrome")
else:
print("The string isn't a palindrome")
ผลลัพธ์
Enter string: madam
The string is a palindrome
Enter string: python
The string isn't a palindrome
รายละเอียด String Slicing [::-1]
string[::-1] หมายถึง slice ทั้งสตริง step = -1 (ย้อนกลับ) คือกลับลำดับตัวอักษร
>>> "hello"[::-1]
'olleh'
>>> "madam"[::-1]
'madam'
ตัวอย่างขยาย: ไม่สนใจตัวพิมพ์เล็ก/ใหญ่และช่องว่าง
def is_palindrome(s):
# ลบช่องว่างและแปลงเป็นพิมพ์เล็กทั้งหมด
cleaned = ''.join(c.lower() for c in s if c.isalnum())
return cleaned == cleaned[::-1]
# ทดสอบ
tests = ["madam", "Madam", "A man a plan a canal Panama", "race car", "hello"]
for t in tests:
print(f'"{t}" -> {is_palindrome(t)}')
ผลลัพธ์
"madam" -> True
"Madam" -> True
"A man a plan a canal Panama" -> True
"race car" -> True
"hello" -> False
สรุป: Python ทำ palindrome check ได้ง่ายมากด้วย slicing [::-1] สำหรับการใช้งานจริงควร normalize string ก่อน (lowercase, strip non-alphanumeric)