Problem Description
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
Input
输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
Output
如果一个字符串是回文串,则输出"yes",否则输出"no".
Sample Input
4 level abcde noon haha
Sample Output
yes no yes no代码:#include<stdio.h> #include<string.h> int main() { int n,s,k,sum; char b,a[100]; scanf("%d",&n); while(n--) { scanf("%s",a); b=strlen(a); for(int i=0;i<=b-1;i++) { a[i]=a[i]; } if(b%2==0) { sum=0; k=1; s=b/2; for(int i=s;i<=b-1;i++) { if(a[i]==a[i-k]) { sum++; k=k+2; } } if(sum==s) printf("yes\n"); else printf("no\n"); sum=0; } else { sum=0; k=2; s=b/2; for(int i=s+1;i<=b-1;i++) { if(a[i]==a[i-k]) { sum++; k=k+2; } } if(sum==s) printf("yes\n"); else printf("no\n"); sum=0; } } return 0; }思路:颠倒for循环,用数组判断是否一样就可以了