題目描述
題目給出的介面為:
class
solution
};
題目分析
定義兩個變數 start 和end,分別表示最長回文子串的起點跟長度,在遍歷s中的字元的時候,我們首先判斷剩餘的字元數是否小於等於end 的一半。
是的話表明就算從當前到末尾到子串是半個回文串,那麼整個回文串長度最多也就是 end,既然 end 無法變長,計算就沒有意義,直接在當前位置 break 。
否則就要繼續判斷,我們用兩個變數left和right分別指向當前位置,然後我們先要做的是向右遍歷跳過重複項,這個操作很必要,比如對於 noon這種,只有先跳過重複,此時left指向第乙個o,right指向第二個o,然後再向兩邊擴散。而對於 bob這種,無法向右跳過重複,此時 left 和 right 同時指向o,再向兩邊擴散也是正確的,所以可以同時處理奇數和偶數的回文串,之後的操作就是更新 end 和 start 了。
**如下:
LeetCode5最長回文子串
給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 動態規劃來做,每個回文字串的子字串也是回文字串,即string是回文字串那麼它的string.substring 1,lenth ...
LeetCode 5 最長回文子串
問題描述 給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 解決方案 中心擴充套件演算法 事實上,只需使用恆定的空間,我們就可以在 o n 2 的時間內解決這個問題...
leetcode5 最長回文子串
遞推式 1 一般 s i 1 s j 1 and j i and j i len s i 1,j 1 2 初始化dp矩陣對角線的值為 true,相鄰兩個元素相等時dp i i 1 為true 初始化回文串起始位置和長度。def longestpalindrome s n len s if s ret...