字串 最長回文子串

2021-09-10 21:25:17 字數 1122 閱讀 8636

介紹一下幾個概念:

就是從左往右和從右往左讀是一樣的。就如標語「我為人人,人人為我」。

子串,顧名思義,就是在原字串中的子集,就叫子串。

串就是不能分割的,就是連在一起,這個要區別與子串行,子串行就是一段 一段的。

列舉各個起點和終點,然後進行判斷該子串是否為回文,最後就是更新最長的回文串。

列舉起點和終點 o(n^2),判斷是否為回文o(n),最後複雜度為:o(n^3)

#includeusing namespace std;

string longestpailndrome(string &s)

if( tmp1 >= tmp2 && j-i+1 > maxlen )}}

return s.substr(st,maxlen);

}int main()

true & (l=r)\\ str[l]==str[r] &(l+1=r) \\ str[l]==str[r]\&\&dp[l+1][r-1] &(l+1複雜度:

因為這個只是單純地列舉所有的兩端點,其餘的都是通過延伸過去得到的。

空間複雜度為o(n^2),         時間複雜度為o(n^2)

#includeusing namespace std;

const int n=1e2;

string longestpailndrome(string &s)else

if( dp[l][r] && r-l+1 > maxlen )}}

return s.substr(st,maxlen);

}int main()

l--;r++;}}

for(int c= 0 ; c < len ;c++ )

l--;r++;}}

return s.substr(st,maxlen);

}int main()

t[0]='@';

t[2*l+1]='#';

t[2*l+2]='\0';

for(int i=1;i<=2*l;i++)

lps=max(lps,len[i]-1);

}return lps;

}int main()

return 0;

}

字串 最長回文子串

最長回文子串 回文子串 即正著看和倒著看相同的子串,如 abcba yyxyy。由於此類題目為面試筆試常考題目,所以現在就來整理一下啦。1 暴力求解法 最直接的想法就是暴力求解,但是我們可以看到下面的 時間複雜度是o n 3 string findlongeststring string str 暴...

字串 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 思路 用manacher class solution int max 1 int res 0 儲存最...

字串處理 最長回文子串

題目描述 給定乙個字串,求它的最長回文子串的長度.方法一 中心擴充套件法.由於回文串中,以某個字元為中心的字首和字尾一定是相同字元。可以利用此方法列舉中心位置,然後進行擴充套件,從而找到最長回文子串。include include using namepace std int longestpali...