输入一串字符串,滤除其中的非字母字符,再判断其是否是回文(palindrome),不考虑大小写。
输入描述
输入一串字符串,滤除其中的非字母字符
输出描述
输出“Y”或“N”
输入样例
Madam, I’m a dam!
Hello, world~~
输出样例
Y
N
Note:回文指的是中心对称的字符串。这题很简单,主要是记得过滤字符的算法以及如何首尾逐步向内比较.
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int i, j, flag=1;
char a[100];
gets(a);
for (j=i=0; a[i]; i++){//过滤非字母字符
if (a[i]>='A'&&a[i]<='Z' || a[i]>='a'&&a[i]<='z')
a[j++] = a[i];//j是在赋值完后才自增1
}
a[j] = '\0';//令a[j]='\0'作为字符串结束标志
for (i=0, j--; i<j; i++, j--){//j必须先减一,因为a[j]='\0'
if (a[i]!=a[j] && fabs(a[i]-a[j])!=32){//相等的判定是同字母或者大小写
flag = 0;
break;
}
}
if (flag==1) printf("Y");
else printf("N");
return 0;
}