Palindromes _easy version
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 50245 Accepted Submission(s): 30517
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;
scanf("%d",&n);
getchar();
while(n--)
{
char a[100];
int i,l,j;
gets(a);
l=strlen(a);
int c=0;
if(l%2==0)
{
for(i=l/2-1,j=l/2;i>=0,j<l;i--,j++)
{
if(a[i]==a[j])c++;
else
if(a[i]!=a[j])break;
}
if(c==l/2)printf("yes\n");
else
printf("no\n");
}
else
if(l%2!=0)
{
for(i=l/2-1,j=l/2+1;i>=0,j<l;i--,j++)
if(a[i]==a[j])c++;
else
if(a[i]!=a[j])break;
if(c==l/2||l==1)printf("yes\n");
else
printf("no\n");
}
}
}
C++:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
char a[100000];
cin>>a;
int x=strlen(a);
int y=0;
if(x%2==0){x=x;}
else{x=x-1;}
for(int j=0;j<(x/2);j++)
{
if(a[j]!=a[strlen(a)-1-j]){cout<<"no"<<endl;break;}
else{y=y+1;}
}
if(y==(x/2)){cout<<"yes"<<endl;}
}
return 0;
}