0 问题:求一个串中,最长的连续子回文串的长度
1 这个问题是求串的连续子串问题,连续子串为o(n^2),而比较是否为回文串为o(n0),所以这题目的暴力解法时间复杂度为o(n^2),我们希望用更少的时间来解决。这题目的思路为从回文串的“肚子”着手,向两边进行扩充;
2 代码
string longestPalindrome(string s)
{
int n = s.size();
if (n == 0 || n == 1)
return s;
int j, k, i;
int maxlen = 0, maxstart = 0, nowlen;
for (i = 0; i < n;)
{
if (maxlen /2 + i >= n)
break;
j = i, k = i;
while (k < n && s[k] == s[k + 1])
k++;
i = (k + j) / 2 + 1;
while (j > 0 && k < n && s[j - 1] == s[k + 1])
{
j--, k++;
}
nowlen = k - j + 1;
if (nowlen > maxl