力扣題庫 5 最長回文子串

2021-09-24 23:37:48 字數 1591 閱讀 7662

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

示例 1:

輸入: 「babad」

輸出: 「bab」

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

示例 2:

輸入: 「cbbd」

輸出: 「bb」

從中心向兩端尋找,最終得到最大的字串

)/*找單數最大,如為回文,則長度為 2 * itmp + 1 */

itmp = solution::

findmaxstring

(s, inum -

1, inum +1)

;if( itmp &&0!=

(ilennum =

(itmp + itmp +1)

)&&

ilennum > imaxlen)

}return s.

substr

(ileft,imaxlen);}

};執行結果

實際效果並不是很優秀。

動態規劃思想

class

solution

while

(nextpos < len)

nextpos = right +1;

while

(left >

0&& right < len -

1&& s[left -1]

== s[right +1]

)if(right - left +

1> maxlength)

}return s.

substr

(startpos, maxlength);}

};

耗時和記憶體消耗很優秀啊,帶來的效果確實極大的,還要努力啊!

供測試驗證使用

int

main

(const

int argc,

const

char

* ar**)

string s = ar**[1]

; std::cout << solution.

longestpalindrome

(s)<< std::endl;

return0;

}

力扣題庫五 最長回文子串

題目 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 中心擴充套件法 class solution 可以用馬拉車演算法的思想來理解 a b b a 這...

最長回文子串 力扣5

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 利用回文字串的特點 正著讀和反著讀都是一樣的,所以首先把s反轉,利用i和j控制左右邊界,不斷從s中擷取...

力扣 5 最長回文子串

題目 和647類似 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 題解 方法一 面試題,要求最長只能一趟迴圈 中心擴散法 class solutio...