最长回文字串
题意
输入一个字符串,求出其最长的回文字串
输入
输入包括字母、数字、标点符号、空格等。
输出
输出保持原样。
算法书上看到的,找了一下oj上的题,竟然没有,应该会有用。。。
#include<bits/stdc++.h>
#define Max 5000+10
using namespace std;
char buf[Max],s[Max];
int main()
{
int n,m=0,max1=0;
int i,j,k;
fgets(buf,sizeof(s),stdin); //读入字符串
n=strlen(buf);
for(i=0; i<n; i++)
{
if((buf[i])) //将小写字母转换为大写字母
s[m++]=toupper(buf[i]);
}
for(i=0; i<m; i++)
{
for(j=i; j<m; j++)
{
int ok=1;
for(k=i; k<=j; k++) //判断其是否为回文字符串
{
if(s[k]!=s[i+j-k])
ok=0;
if(ok&&j-i+1>max1)
max1=j-i+1; //若回文串可以再长一点就再长一点
}
}
}
printf("%d\n",max1);
return 0;
}