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
廣告