LeetCode5 最長回文子串

2021-10-11 23:33:54 字數 841 閱讀 3659

原題鏈結。

題目:給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。

回文子串:正讀和反讀都一樣。

思路1:列出長度大於2的所有子串,判斷其是否是回文子串,然後找出其長度最大的。

class solution }}

return ans;

}};

注意這種方法在leetcode裡跑是超時的!

思路2:動態規劃。建立二維陣列dp,dp[i][j]表示子串(i,j),dp[i][j]為true表示這個子串是回文子串,否則就不是的。判斷dp[i][j]是否是回文子串有兩個條件:①s[i]==s[j]②dp[i+1][j-1]=true。

第二個條件需要考慮邊界條件:字串長度小於2,即j-1-i-1+1<2;即對應s[i,j]為長度2或者3的情況:s[i]==s[j]成立情況下這兩種情況必為回文子串,即dp[i][j]=true。確定回文子串接下來只要找到其中長度最大的即可。

c++實現如下:

class solution }}

return s.substr(begin,maxlength); //substr用法,取s中begin位置開始長度為maxlength的子串。

}};

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