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

โปรแกรมหาสตริง non-palindrome เล็กสุดตามลำดับเล็กซิโครกราฟิกใน Python

สมมติว่ามีสตริง s ที่เป็น palindrome ต้องเปลี่ยนตัวอักษร 1 ตัว ให้ s ไม่เป็น palindrome และเล็กสุดตามลำดับเล็กซิโครกราฟิก

ตัวอย่าง: s = "level" ผลลัพธ์ "aevel" เปลี่ยน 'l' ตัวแรกเป็น 'a'

ขั้นตอนการแก้ปัญหา

  1. วน i จาก 0 ถึง len(s)//2 - 1:
    • ถ้า s[i] != 'a': แปลง s เป็น list, s[i] = 'a', คืน join(s)
  2. ถ้าทุกตัวในครึ่งแรกเป็น 'a' แล้ว: แปลงเป็น list, s[-1] = 'b', คืน join(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