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

Chương trình tìm độ dài của chuỗi con palindromic dài nhất sau một lần quay bằng Python


Giả sử chúng ta có một chuỗi s, chuỗi này chúng ta có thể xoay tại bất kỳ điểm nào chính xác một lần. Chúng ta phải tìm độ dài của chuỗi con palindromic dài nhất mà chúng ta có thể nhận được bằng cách thực hiện thao tác này.

Vì vậy, nếu đầu vào là s =​​"elklev", thì đầu ra sẽ là 7, vì chúng ta có thể xoay giữa "el" và "klev" để lấy "levelk". Vì vậy, ở đây độ dài chuỗi con palinfromic dài nhất là 5.

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

  • s2:=nối s hai lần

  • max_len:=0

  • đối với x trong phạm vi 0 đến kích thước của s-1, thực hiện

    • đối với y trong phạm vi từ 0 đến kích thước của s, thực hiện

      • temp:=s2 [từ chỉ mục x đến x + y]

      • nếu nhiệt độ là palindrome và kích thước của nhiệt độ> max_len thì

        • max_len:=kích thước của nhiệt độ

  • trả về max_len

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):
      s2 = 2 * s
      max_len = 0
      for x in range(len(s)):
         for y in range(len(s) + 1):
            temp = s2[x : x + y]
            if temp == temp[::−1] and len(temp) > max_len:
               max_len = len(temp)
      return max_len
ob = Solution()
s = "elklev"
print(ob.solve(s))

Đầu vào

"elklev"

Đầu ra

5