半對
給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。
示例 1:
輸入: "babad"
輸出: "bab"
注意: "aba" 也是乙個有效答案。
示例 2:
輸入: "cbbd"
輸出: "bb"
思路一:翻轉字串法。
1.將整個字串反轉,然後判斷原始的字串是否在反轉的字串**現。
2.只是出現還不夠,還要驗證該字串是否是回文的。
class solution
}else
break;}}
return res;
}};
思路二:動態規劃法.
1.定義乙個(len, len)的二維陣列,陣列的(i,i)是1,因為單個字元是回文字元。
2.如果s[i]==s[i+1],則是兩個連續的字元,也構成回文。
3.從長度為三開始掃瞄,如果s[i]==s[j]&&d[i+1][j-1]==1,則構成乙個新的回文字串。
class solution
}for (int l=3; l<=len; l++)}}
return s.substr(start,max);
}};
動態規劃 最長回文字串
題目 請從乙個已知的字串中尋找最長回文字串 解法1 動態規劃 回文字串的子串也是回文,比如p i,j 表示以i開始以j結束的子串 是回文字串,那麼p i 1,j 1 也是回文字串。這樣最長回文子串就能分解成一系列子問題了。這樣需要額外的空間o n 2 演算法複雜度也是o n 2 狀態方程和轉移方程 ...
動態規劃 最長回文子串
動態規劃 最長回文子串 題目描述 給出乙個字串s,求s的最長回文子串的長度 樣例 字串 patzjujztaccbcc 的最長回文子串為 atzjujzta 長度為9。動態規劃思想 令dp i j 表示s i 至s j 所表示的子串是否是回文子串,是則為1,不是為0。這樣根據s i 是否等於s j ...
動態規劃之最長回文串
dp i j 表示 以s i 開始s j 結尾的回文串的長度。如果這個字串不是回文串,讓dp i j 0 顯然,j i,只需往dp填j i的部分即可。dp i j 的遞推公式可以這麼表述 1 首先對dp的對角線元素初始化為1,也就是當i j時,dp i j 1。這很顯然,每個單獨的字元其實就是個長度...