http://acm.hdu.edu.cn/showproblem.php?pid=2029
Problem Description
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
Input
输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
Output
如果一个字符串是回文串,则输出"yes",否则输出"no".
Sample Input
4
level
abcde
noon
haha
Sample Output
yes
no
yes
no
Microsoft_zzt 的代码:
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 10; char s[maxn]; int main() { int n; while(~scanf("%d", &n)) { for(int i = 1; i <= n; i ++) { scanf("%s", s); int ans = 1; int len = strlen(s); for(int j = 0; j < len / 2; j ++) { if(s[j] != s[len - j - 1]) ans = 0; } if(ans) printf("yes "); else printf("no "); } } return 0; }
小张的代码:
#include <bits/stdc++.h> using namespace std; int a[111],b[111]; char s[100]; int flag,flag1; int main() { int n; cin>>n; for(int i=1; i<=n; i++) { while(scanf("%s",s)!=EOF) { int len = strlen(s); if(len%2==0) { for(int i=0; i<len/2; i++) { if(s[i]==s[len-1-i]) flag=1; else flag=0; } if(flag==1) cout<<"yes"<<endl; else cout<<"no"<<endl; } else { for(int i=0; i<(len-1)/2; i++) { if(s[i]==s[len-1-i]) flag1=1; else flag1=0; } if(flag1==1) cout<<"yes"<<endl; else cout<<"no"<<endl; } } return 0; } }