样例输入:Confuciiuss say:Madam,I‘m Adam;
样例输出:Madam,I‘m Adam
这个题我们首先要解决三个问题一个是大小写的问题一个是把符号忽略的问题 一个是输入字符串问题
首先是输入字符串问题 我推荐使用fgets(buf,sizeof,stdin),这个输入关键字不会使用非法内存,不想gets gets会无限网字符串里面塞东西 导致会访问非法内存;
第二我们解决大小写问题 我们可以用ctype.h文件中isalpha来转换 if(isalpha(buf[i]))判断是否为字母 然后touppre[buf[i]]转换成小写的 这样就可以随意的判断是否为回文串了
下面看代码:
#include<stdio.h> #include<string.h> #include<ctype.h> #define MAXN 5000+10 char buf[MAXN],s[MAXN]; int main() { int n,m = 0,max = 0; int i,j,k; fgets(buf,sizeof(s),stdin); n = strlen(buf); for(i = 0;i < n;i++) { if(isalpha(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 > max) max = j-i+1; } } printf("%d\n",max); return 0; }
时间: 2024-10-14 03:44:23