#1032 : 最长回文子串

样例输入

3
abababa
aaaabaa
acacdas

样例输出

7
5
3

学习manachar算法

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char str[1000105];

//暴力解法

int fast()
{
int start, endd, len, ans = 0;
for (int i = 1; str[i]; i++) //for循环
{
start = endd = i;
while (str[i] == str[endd + 1])
endd++;
i = endd;
while (str[start - 1] == str[endd + 1])
start--, endd++;
len = endd - start + 1;
if (len>ans)
ans = len;
}
return ans;
}
int main()
{
int n;
cin >> n;
while (n--)
{
str[0] = '!';
cin >>str+1; //从str[1]写入
cout << fast() << endl;
}
return 0;
}

posted @ 2017-08-07 14:04  code666  阅读(115)  评论(0编辑  收藏  举报