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

โปรแกรมค้นหาสตริงที่ไม่ใช่พาลินโดรมที่เล็กที่สุดในพจนานุกรมศัพท์ใน Python


สมมติว่าเรามีสตริง s ที่เป็นพาลินโดรม เราต้องเปลี่ยนอักขระตัวหนึ่งเพื่อให้ s ไม่เป็นพาลินโดรมอีกต่อไปและมีขนาดเล็กที่สุดตามพจนานุกรม

ดังนั้น หากอินพุตเป็น s ="ระดับ" ผลลัพธ์จะเป็น "aevel" เนื่องจากเราสามารถเปลี่ยน "l" ตัวแรกเป็น "a" เพื่อให้ได้สตริงที่เล็กที่สุดเกี่ยวกับศัพท์เฉพาะที่ไม่ใช่ palindrome

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • สำหรับฉันในช่วง 0 ถึงส่วนจำนวนเต็มของ (ขนาดของ s / 2) ทำ
    • ถ้า s[i] ไม่เหมือนกับ "a" แล้ว
      • s :=รายการใหม่จากตัวละครทั้งหมดใน s
      • s[i] :="a"
      • รวมอักขระทั้งหมดใน s และส่งคืน
  • 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