介绍:manacher是一种用来求字符串子串中最长回文长度,时间复杂度可以达到 O ( n ) O(n) O(n)级别。
下面先介绍暴力求解法。
思路:
①求出字符串的所有子串,时间复杂度为 O ( n 2 ) O(n^2) O(n2)。设置指针 l e f t , r i g h t left,right left,right,分别表示子串的左右下标,在第一个for循环枚举出所有可能的 l e f t left left,在第二个for循环枚举出在 l e f t left left情况下,所有可能的 r i g h t right right。
②判断字符串为回文字符串的方法,时间复杂度为 O ( n ) O(n) O(n)。把字符串翻转,与原来字符比较如果相同即为回文字符串。
源代码
bool IsPalindromes(string s,int,int);
void FindSubstring(string s)
{
int left,right,maxn=1;
for(left=1;left<s.length();left++)
{
for(right=left+1;right<s.length();right++)
{