思路:
思路:利用枚举回文串的起点和终点,然后判断他是否是回文字符串。【注释:fgets:从文件中读取一行数据存入缓冲区(fgets遇到回车才会结束,不对空格和回车做任何转换就录入到缓冲区,结束后再往缓冲区写多一个\0,所以它是读一行数据)】
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cctype>
#include<cstring>
#define N 50050
using namespace std;
char buf[N],s[N];
char p[N];
int main()
{
int n,m=0,max=0,x,y;
int i,j;
fgets(buf,sizeof(s),stdin);
n=strlen(buf);
for(i=0; i<n-1; i++)
if(isalpha(buf[i]))
{
p[m]=i;
s[m++]=buf[i];
}
for(i=0;i <m;i++)
{
for(j=0;i-j>=0&&i+j<m;j++)
{
if(s[i-j]!=s[i+j]) break;
if(max<2*j+1)
{
max=2*j+1;
x=p[i-j];
y=p[i+j];
}
}
for(j=0;-j>0&&i+j+1<m;j++)
{
if(s[i-j]!=s[i+j+1]) break;
if(max<2*j+2)
{
max=2*j+2;
x=p[i-j];
y=p[i+j+1];
}
}
}
for(i=x;i<=y;i++)
cout<<buf[i];
cout<<endl;
return 0;
}