C計算最大回文字串的長度

2021-07-25 02:36:08 字數 368 閱讀 3806

題目:輸入乙個字串和長度,求最大回文字串的長度

分析:manacher演算法

在原串中插入特殊字元(串中沒有的字元),就能把偶數長的串變成奇數

然後求乙個序列p, p[i]為以i為中心,最長的回文串左端到i距離。在計算p[i]時,假設之前求得的串的右端最右的乙個的中心為id,它的右端為mx,那麼從i向左長為min(p[id * 2 - i], mx - i) 的一段一定是等於 i 後面等長的一段,也就是以i為中心的回文串至少能向左擴充套件 min(p[id * 2 - i], mx - i) 的長度。

程式:#include

int fast(char *p,int n)

return ans;

}int main()

最大回文字串長度 manacher演算法

參考 題目 hdu3068 hdu3068.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include using namespace std int longestpdr vector vc for int i 0 i rd...

leetcode練習5(最大長度的回文字串)

題目 給定乙個字串,輸出其中長度最大的回文字串。題解 1 遍歷字串,檢查以字串的某個 某相鄰兩個 字元為中心,向字串左右展開,是否滿足回文字串的要求 class solution void count else else if str i str i 1 若回文字串無中心單字元 else if co...

最大回文字串

題目描述 輸入乙個字串,求出其中最長的回文。回文 正著看和倒著看相同,如abba和yyxyy 在判斷時,應該忽略所有標點符號和空格,且忽略大小寫,但輸出應保持原樣。輸入字串的長度不超過5000,且佔據單獨的一行。ying g輸出最長的回文串,如果有多個,輸出起始位置最左邊的。樣例輸入 confuci...