每日一題2 最長回文串

2021-09-27 11:49:07 字數 1216 閱讀 5789

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

示例 1:

輸入: 「babad」

輸出: 「bab」

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

示例 2:

輸入: 「cbbd」

輸出: 「bb」

要判斷乙個字串是不是回文串有點難,但如果知道它的字串是回文串,再結合新進去的字元是否符合要求,就可以只考慮當前狀態而做出決策,也就是動態規劃。

假設s

ss表示輸入的字串,s[i

]s[i]

s[i]

表示s的第i個字元(從0開始),fij

f_fi

j​表示s [i

]...

s[j]

s[i]...s[j]

s[i]..

.s[j

]是否為回文串,若是則值為1否則為0。那麼可以寫出狀態轉移方程

f ij

=f(i

+1)(

j−1)

&&s[

i]==

s[j]

f_ = f_\&\&s[i]==s[j]

fij​=f

(i+1

)(j−

1)​&

&s[i

]==s

[j]fii

=1(i

=1,2

,...

,s.l

engh

)f_ = 1 (i = 1,2,...,s.lengh)

fii​=1

(i=1

,2,.

..,s

.len

gh)φ=1

(令空串

也是回文

串)

\phi = 1(令空串也是回文串)

φ=1(令空

串也是回

文串)

#include#includeusing namespace std;

class solution

else

}} return s.substr(index, lenmax);

} solution()

index = 0;

lenmax = 1;

}};int main()

每日一題 最長回文串

給定乙個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如 aa 不能當做乙個回文字串。注意 假設字串的長度不會超過 1010。輸入 abccccdd 輸出 7 解釋 我們可以構造的最長的回文串是 dccaccd 它的長度是 7。將字串轉換為列表...

每日一題 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 取反轉字串,與原字串對比 例 aebcbe 第一大輪 第一小輪 aebcbe 與 ebcbea比較 第...

每日一題 49 最長回文子串

子串 字串中連續的字元片段。回文 正著看和反著看都一樣的字串。如abba和abbebba是回文,bbab不是回文。最長回文子串 對於字串的所有子串,找出是回文且最長的那乙個 舉例 1 babcbabcbaccba的最長回文子串是abcbabcba 2 bbbb的最長回文子串是其本身 這裡給出dp演算...