B2124 判断字符串是否为回文 题解
思路解析
这题主要分为两个部分:回文,字符串。
字符串的部分可以使用 C++ 自带的 \(\texttt{string}\) 型变量(字符串)进行操作,这题要用到 \(\texttt{string}\) 型变量中自带的可以返回字符串长度的length()
函数。
回文的部分,我们可以根据题目内对回文的定义来判断一个字符串是否是回文:把一个字符串对折,如果两边一样,则是回文,不一样则不是。
如图,我们按照图上的方法进行匹配处理。
代码剖析
2.1定义字符串
string s;
cin>>s;
使用string
定义一个字符串。
2.2循环判断回文
for(int i=0,j=s.length()-1;i<=s.length()/2;i++,j--){//两个下标依次查找两侧。
if(s[i]!=s[j]){//如果匹配不上,就不是回文串
cout<<"no"<<endl;
return 0;
}
}
cout<<"yes"<<endl;//都匹配上了,就是回文串
我们使用下标 \(i,j\) 来依次对比对折后的两侧。如果发现两侧中某个位置不能互相匹配,立即输出no
并return 0
。
如果没有成功return 0
,即没有找到不匹配的地方,那么这个字符串就是回文串,输出yes
。
完整代码
#include <bits/stdc++.h> //建议选择万能头文件,避免写程序前打很多头文件
using namespace std;
int main()
{
string s;//定义string类(字符串)
cin>>s;
for(int i=0,j=s.length()-1;i<=s.length()/2;i++,j--){
if(s[i]!=s[j]){
cout<<"no"<<endl;
return 0;
}
}//判断回文的循环
cout<<"yes"<<endl;
return 0;
}