Python程式:查詢單次旋轉後最長迴文子串的長度


假設我們有一個字串s,我們可以精確地旋轉它任意一點一次。我們必須找到透過此操作可以獲得的最長迴文子串的長度。

因此,如果輸入類似於s = "elklev",則輸出將為7,因為我們可以在“el”和“klev”之間旋轉以獲得“levelk”。因此,這裡最長迴文子串的長度為5。

為了解決這個問題,我們將遵循以下步驟:

  • s2 := 將s連線兩次

  • max_len := 0

  • 對於x從0到s的大小-1,執行:

    • 對於y從0到s的大小,執行:

      • temp := s2[從索引x到x + y]

      • 如果temp是迴文且temp的大小 > max_len,則:

        • max_len := temp的大小

  • 返回max_len

讓我們看下面的實現來更好地理解:

示例

 線上演示

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

輸入

"elklev"

輸出

5

更新於:2020年12月15日

165 次瀏覽

開始你的職業生涯

完成課程後獲得認證

開始
廣告