字符串回文

输入一串字符串,滤除其中的非字母字符,再判断其是否是回文(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;
}

猜你喜欢

转载自blog.csdn.net/qq_37701948/article/details/80135986