Leetcode 5 最長回文子串

2021-10-22 20:03:47 字數 1273 閱讀 9599

給你乙個字串 s,找到 s 中最長的回文子串。

示例 1:

輸入:s = 「babad」

輸出:「bab」

解釋:「aba」 同樣是符合題意的答案。

解1 暴力解法,力扣上會超時,但是好理解

class

solution

} temp="";

}return res;}}

;

解2 可以順利通過力扣,大佬的演算法

class

solution

string str =

"#";

for(

int i =

0; i < s.

size()

; i++

)// 新字串的長度

int strsize =

2* size +1;

// 陣列 p 記錄了掃瞄過的回文子串的資訊

vector<

int>

p(strsize,0)

;// 雙指標,它們是一一對應的,須同時更新

int maxright =0;

int center =0;

// 當前遍歷的中心最大擴散步數,其值等於原始字串的最長回文子串的長度

int maxlen =1;

// 原始字串的最長回文子串的起始位置,與 maxlen 必須同時更新

int start =0;

for(

int i =

0; i < strsize; i++

)// 下一次嘗試擴散的左右起點,能擴散的步數直接加到 p[i] 中

int left = i -(1

+ p[i]);

int right = i +(1

+ p[i]);

// left >= 0 && right < slen 保證不越界

// str.charat(left) == str.charat(right) 表示可以擴散 1 次

while

(left >=

0&& right < strsize && str[left]

== str[right])if

(i + p[i]

> maxright)

if(p[i]

> maxlen)

}return s.

substr

(start, maxlen);}

};

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