回文的乐趣

toj5126: 回文的乐趣
以前有接触过回文串,但从来都没总结过。

5126: 回文的乐趣
描述
小X平时喜欢看对称的东西,其中小X最喜欢回文串,每次看到回文串都会很开心。今天上课的时候小X心情不好,因此他的朋友小Y想要在书上找到回文串给X看。现在有个字符串,小Y想要在里面找到最长的回文字符子串。然而小Y的眼神一看到英文字母就头疼,你可以写个程序帮他找到最长回文子串么。
回文串是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
输入
输入有多组数据。
每组数据输入一个字符串S,S由小写字母组成。最大长度为1000。当S为“end”时输入结束。
输出格式Case x: y。x表示第几组数据,y表示最长回文子串的长度。
样例输入
level
abcd
end
输出
Case 1: 5
Case 2: 1

//数组p用来存储当前
#include
#include
#include
using namespace std;
int main()
{
	__int64 i,j,ctnba,ctba,cta;
	char s1[1005];
	char s[10000];
	int p[10000];
	int k=1;
	while(scanf("%s",s1),strcmp(s1,"end")!=0)
	{
		s[0]='$';
		s[1]='#';
		for(i=0;i i ? min(a,b) : 1;//min函数的头文件是algorithm
			while(s[p[i]+i]==s[i-p[i]])p[i]++;
			if(p[i]+i>mx)
			{
				mx=p[i]+i;
				id=i; 
			}
			if(p[i]>max)max=p[i];
		}
		printf("Case %d: %d\n",k++,max-1);
	} 
} 

你可能感兴趣的:(每天一总结)