โจทย์: กำหนดสตริง ลบพยัญชนะทั้งหมด ตรวจสอบว่าสตริงสระที่เหลือเป็น Palindrome หรือไม่
ตัวอย่าง
Input: "aeoea" → สระทั้งหมด → "aeoea" → Palindrome ✓
อัลกอริทึม
- กรองเฉพาะสระ (a, e, i, o, u)
- ตรวจสอบ palindrome: string == string[::-1]
- ถ้าไม่มีสระเลย → คืนค่า -1
ตัวอย่างโค้ด Python (แก้ไขจากต้นฉบับ)
def is_vowel_palindrome(s):
# กรองเฉพาะสระ
vowels = ''.join([c for c in s.lower() if c in 'aeiou'])
if not vowels:
return -1 # ไม่มีสระ
# ตรวจสอบ palindrome
return vowels == vowels[::-1]
# ทดสอบ
print(is_vowel_palindrome("aeoea")) # True
print(is_vowel_palindrome("hello")) # False (eo != oe)
print(is_vowel_palindrome("bcdfg")) # -1 (ไม่มีสระ)
print(is_vowel_palindrome("A man a plan")) # True (aaa a aaa)
ปัญหาในโค้ดต้นฉบับ: ฟังก์ชัน vowel() มี bug: flag==1 เป็นการเปรียบเทียบ ไม่ใช่การกำหนดค่า และ logic ไม่ถูกต้อง โค้ดข้างต้นเขียนใหม่ให้ถูกต้องและอ่านง่าย