最長回文子串

2021-10-23 00:21:56 字數 1023 閱讀 1233

【題目】

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

輸入: 「babad」

輸出: 「bab」

注意: 「aba」 也是乙個有效答案。

很明顯,暴力法將選出所有子字串可能的開始和結束位置,並檢驗它是不是回文。

【**】

public string longestpalindrome1

(string s)

else}if

(left < right)

else

if(l < temp)}}

return s.

substring

(resleft,resright+1)

;}

/**

* 動態規劃高階:二維陣列和公式

* dp[i][j] 表示 i到j是回文子串

* dp[i+1][j+1]是回文子串的條件:dp[i][j]是回文並且s(i+1)==s(j+1)

* dp[i][i+1]是回文,只需要,s(i)==s(i+1)

* 邊界:所有的單字元以及二回文子串

* dp[i][i] 全部是回文子串

* 判斷dp[i][i+1]是不是回文,條件:s(i)==s(i+1)

* */

這產生了乙個直觀的動態規劃解法,我們首先初始化一字母和二字母的回文,然後找到所有三字母回文,並依此類推…

【**】

public string longestpalindrome

(string s)

}//i表示檢索的子串長度,等於3表示先檢索長度為3的子串

for(i=

3; i<=len; i++)}

}}return s.

substring

(l,r+1)

;}

這裡有幾個需要注意的地方:

最長回文子串 最長回文子串行

1.最長回文子串行 可以不連續 include include include include using namespace std 遞迴方法,求解最長回文子串行 intlps char str,int i,int j intmain include include include using n...

最長回文子串

描述 輸入乙個字串,求出其中最長的回文子串。子串的含義是 在原串連續出現的字串片段。回文的含義是 正著看和倒著看是相同的,如abba和abbebba。在判斷是要求忽略所有的標點和空格,且忽略大小寫,但輸出時按原樣輸出 首尾不要輸出多餘的字串 輸入字串長度大於等於1小於等於5000,且單獨佔一行 如果...

最長回文子串

輸入乙個字元,求出其中最長的回文子串。子串的含義是 在元串中連續出現的字串片段。回文的含義是 正看和倒看相同,如abba和yyxyy,在判斷時候應該忽略所有的空格和標點符號,且忽略大小寫,但輸出應該保持原樣,輸入的字元長度不超過5000,且佔據單獨一行,輸出最長的回文子串 如有多個,輸出,起始位置最...