สมมติว่าเรามีสตริง s ที่เป็นพาลินโดรม เราต้องเปลี่ยนอักขระตัวหนึ่งเพื่อให้ s ไม่เป็นพาลินโดรมอีกต่อไปและมีขนาดเล็กที่สุดตามพจนานุกรม
ดังนั้น หากอินพุตเป็น s ="ระดับ" ผลลัพธ์จะเป็น "aevel" เนื่องจากเราสามารถเปลี่ยน "l" ตัวแรกเป็น "a" เพื่อให้ได้สตริงที่เล็กที่สุดเกี่ยวกับศัพท์เฉพาะที่ไม่ใช่ palindrome
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- สำหรับฉันในช่วง 0 ถึงส่วนจำนวนเต็มของ (ขนาดของ s / 2) ทำ
- ถ้า s[i] ไม่เหมือนกับ "a" แล้ว
- s :=รายการใหม่จากตัวละครทั้งหมดใน s
- s[i] :="a"
- รวมอักขระทั้งหมดใน s และส่งคืน
- ถ้า s[i] ไม่เหมือนกับ "a" แล้ว
- s :=รายการใหม่จากตัวละครทั้งหมดใน s
- องค์ประกอบสุดท้ายของ s :="b"
- รวมอักขระทั้งหมดใน s และส่งคืน
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, s): for i in range(len(s) // 2): if s[i] != "a": s = list(s) s[i] = "a" return "".join(s) s = list(s) s[-1] = "b" return "".join(s) ob = Solution() s = "level" print(ob.solve(s))
อินพุต
"level"
ผลลัพธ์
aevel