csp信奥赛C++高频考点专项训练之字符串 --【回文字符串】:判断字符串是否为回文
csp信奥赛C++高频考点专项训练之字符串 --【回文字符串】:判断字符串是否为回文
题目描述
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。
输入格式
输入一行字符串,长度小于100 100100。
输出格式
如果字符串是回文,输出yes;否则,输出no。
输入输出样例 1
输入 1
abcdedcba输出 1
yes思路分析(方法1)
要判断一个字符串是否为回文,只需比较字符串的第i个字符与倒数第i个字符是否相等,直到中间位置。
- 读取整行字符串(可能包含空格)。
- 使用双指针
i(头)和j(尾),初始i = 0,j = s.length() - 1。 - 循环条件
i < j,每次比较s[i]与s[j]:- 若不同,输出
no并结束程序。 - 若相同,
i++,j--继续比较。
- 若不同,输出
- 循环正常结束说明是回文,输出
yes。
代码实现(方法1)
#include<bits/stdc++.h>usingnamespacestd;intmain(){string s;getline(cin,s);//读取整行字符串inti=0,j=s.size()-1;//双指针指向首尾while(i<j){if(s[i]!=s[j]){//对应字符不同cout<<"no"<<endl;return0;}i++;//左指针右移j--;//右指针左移}cout<<"yes"<<endl;return0;}功能分析(方法1)
输入处理:使用
getline读取整行,允许字符串中包含空格,符合题目“一行字符串”的描述。回文判断:双指针从两端向中间逐个字符比较,一旦发现不相等立即输出
no并退出;若全部相等则输出yes。时间复杂度:O(n),n 为字符串长度,最大 100,效率极高。
空间复杂度:O(1),仅使用了常数个额外变量。
思路分析(方法2)
使用reverse方法:
- 读取原始字符串
s。 - 将其复制到另一个字符串
t中。 - 反转
t。 - 比较
s与t是否相等:- 相等则输出
yes - 否则输出
no
- 相等则输出
这种方法简单直观,直接利用 STL 的reverse函数。
代码实现(方法2)
#include<bits/stdc++.h>usingnamespacestd;intmain(){string s,t;getline(cin,s);//读取原字符串t=s;//复制到treverse(t.begin(),t.end());//反转tif(s==t)//比较原串与反转串cout<<"yes"<<endl;elsecout<<"no"<<endl;return0;}功能分析(方法2)
- 输入:使用
getline读取一行,支持空格。 - 处理:
reverse将字符串首尾颠倒,时间复杂度 O(n)。 - 判断:直接比较原串与反转串是否相等,简单可靠。
- 输出:符合题目要求的
yes或no。
【完整系列请查看专栏】:
信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
各种学习资料,助力大家一站式学习和提升!!!
#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}【秘籍汇总】(完整csp信奥赛C++学习资料):
1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):
https://edu.csdn.net/lecturer/7901 点击跳转
2、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转
https://edu.csdn.net/course/detail/41081 点击跳转
3、csp信奥赛高频考点知识详解及案例实践:
CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转
CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转
信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转
4、csp信奥赛冲刺一等奖有效刷题题解:
信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
信奥赛C++提高组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转
5、GESP C++考级真题题解:
GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转
GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转
GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转
· 文末祝福 ·
#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}