介紹一下幾個概念:
就是從左往右和從右往左讀是一樣的。就如標語「我為人人,人人為我」。
子串,顧名思義,就是在原字串中的子集,就叫子串。
串就是不能分割的,就是連在一起,這個要區別與子串行,子串行就是一段 一段的。
列舉各個起點和終點,然後進行判斷該子串是否為回文,最後就是更新最長的回文串。
列舉起點和終點 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...