1146:判断字符串是否为回文(c++)
时间限制: 1000 ms 内存限制: 65536 KB
【题目描述】
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。
【输入】
输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。
【输出】
如果字符串是回文,输出yes;否则,输出no。
【输入样例】
abcdedcba
【输出样例】
yes
很简单,简直是水题
这道题比较简单,没什么要多讲的,详见代码注释。
我一开始做错了
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);//输入字符串
int l=s.size();//求得字符串长度
int t=0;
int a[l/2];
for (int i=0;i<l/2;i++)
a[i]=0;//定义数组时下标为变量时,不能直接初始化如“a[l/2]={0}”,必须使用循环来初始化。
int k=l-1;
for (int i=0;i<l/2;i++)
if (s[i]==s[k])//判断前后是否相等。
{
a[i]=1;
k--;
}
for (int i=0;i<l/2;i++)
{
if (a[i]==0)
break;
if (i==l/2-1)
t=1;//当循环到最后也没有退出,说明a全部为1,所以s为回文字符串。
}
if (t==1)
printf("yes");
else
printf("no");
return 0;
}