Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm chuỗi không palindromic nhỏ nhất về mặt từ vựng trong Python

Giả sử chúng ta có một chuỗi s là một palindrome. Chúng ta phải thay đổi một ký tự sao cho s không còn là palindrome nữa và nó nhỏ nhất về mặt từ vựng.

Vì vậy, nếu đầu vào là s =​​"level", thì đầu ra sẽ là "aevel", vì chúng ta có thể thay đổi "l" đầu tiên thành "a" để nhận được chuỗi nhỏ nhất về mặt từ vựng không phải là palindrome.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • đối với tôi trong phạm vi từ 0 đến phần nguyên của (kích thước s / 2), hãy thực hiện
    • nếu s [i] không giống "a", thì
      • s:=một danh sách mới từ tất cả các ký tự trong s
      • s [i]:="a"
      • nối tất cả các ký tự thành s và quay lại
  • s:=một danh sách mới từ tất cả các ký tự trong s
  • phần tử cuối cùng của s:="b"
  • nối tất cả các ký tự thành s và quay lại

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

"level"

Đầu ra

aevel