csp信奥赛C++高频考点专项训练之字符串 --【回文字符串】:判断字符串是否为回文

csp信奥赛C++高频考点专项训练之字符串 --【回文字符串】:判断字符串是否为回文

题目描述

输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。

输入格式

输入一行字符串,长度小于 100 100 100。

输出格式

如果字符串是回文,输出 yes;否则,输出 no

输入输出样例 1
输入 1
复制代码
abcdedcba
输出 1
复制代码
yes

思路分析(方法1)

要判断一个字符串是否为回文,只需比较字符串的第 i 个字符与倒数第 i 个字符是否相等,直到中间位置。

  • 读取整行字符串(可能包含空格)。
  • 使用双指针 i(头)和 j(尾),初始 i = 0j = s.length() - 1
  • 循环条件 i < j,每次比较 s[i]s[j]
    • 若不同,输出 no 并结束程序。
    • 若相同,i++j-- 继续比较。
  • 循环正常结束说明是回文,输出 yes

代码实现(方法1)

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    getline(cin, s);//读取整行字符串
    int i = 0, j = s.size() - 1;//双指针指向首尾
    while (i < j) {
        if (s[i] != s[j]) {//对应字符不同
            cout << "no" << endl;
            return 0;
        }
        i++;//左指针右移
        j--;//右指针左移
    }
    cout << "yes" << endl;
    return 0;
}

功能分析(方法1)

  • 输入处理 :使用 getline 读取整行,允许字符串中包含空格,符合题目"一行字符串"的描述。

  • 回文判断 :双指针从两端向中间逐个字符比较,一旦发现不相等立即输出 no 并退出;若全部相等则输出 yes

  • 时间复杂度:O(n),n 为字符串长度,最大 100,效率极高。

  • 空间复杂度:O(1),仅使用了常数个额外变量。

思路分析(方法2)

使用 reverse 方法:

  1. 读取原始字符串 s
  2. 将其复制到另一个字符串 t 中。
  3. 反转 t
  4. 比较 st 是否相等:
    • 相等则输出 yes
    • 否则输出 no

这种方法简单直观,直接利用 STL 的 reverse 函数。

代码实现(方法2)

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    string s, t;
    getline(cin, s);   //读取原字符串
    t = s;             //复制到t
    reverse(t.begin(), t.end()); //反转t
    if (s == t)        //比较原串与反转串
        cout << "yes" << endl;
    else
        cout << "no" << endl;
    return 0;
}

功能分析(方法2)

  • 输入 :使用 getline 读取一行,支持空格。
  • 处理reverse 将字符串首尾颠倒,时间复杂度 O(n)。
  • 判断:直接比较原串与反转串是否相等,简单可靠。
  • 输出 :符合题目要求的 yesno

【完整系列请查看专栏】:
信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转


各种学习资料,助力大家一站式学习和提升!!!

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"##########  一站式掌握信奥赛知识!  ##########";
	cout<<"#############  冲刺信奥赛拿奖!  #############";
	cout<<"######  课程购买后永久学习,不受限制!   ######";
	return 0;
}

【秘籍汇总】(完整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 点击跳转

· 文末祝福 ·

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"跟着王老师一起学习信奥赛C++";
	cout<<"    成就更好的自己!       ";
	cout<<"  csp信奥赛一等奖属于你!   ";
	return 0;
}
相关推荐
啊啊啊啊啊!!!!17 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
(Charon)19 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
ShineWinsu20 小时前
对于Linux:五种IO模型以及非阻塞IO的详细解析
linux·c++·面试·io·阻塞·非阻塞·fcntl
呜喵王阿尔萨斯21 小时前
extern “C“ in C++
c语言·c++·算法
乐观勇敢坚强的老彭21 小时前
C++信奥静态数组和动态数组
数据结构·c++·算法
gumichef1 天前
第一章:面向对象核心——类和对象深度讲解
开发语言·c++
ao-weilai1 天前
C++基础:类和对象
开发语言·c++
郝学胜-神的一滴1 天前
[简化版 GAMES 104] 现代游戏引擎 04:从0到1构建你的游戏世界
c++·游戏·unity·游戏引擎·软件工程·unreal engine
Bryce学亮1 天前
FileLine,基于 Qt 6 + QML 构建的跨平台文件传输与即时通讯工具
数据库·c++·人工智能·python·qt·github
旖旎夜光1 天前
LeetCode 991: 坏了的计算器(贪心算法) —— 题解
数据结构·c++·算法·leetcode·贪心算法