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;
}
相关推荐
Emberone1 小时前
C++ 模板进阶详解:从非类型参数到特化、偏特化与分离编译
开发语言·c++
凤凰院凶涛QAQ1 小时前
《C++转Java快速入手系列》实践篇:图书系统
java·开发语言·c++
大大杰哥1 小时前
2025ccpc南昌补题笔记(前六题)
c++·笔记·算法
j_xxx404_1 小时前
Linux信号机制:从键盘到内核、进阶实战硬核剖析
linux·运维·服务器·c++·人工智能·ai
qeen871 小时前
【算法笔记】各种常见排序算法详细解析(上)
c语言·数据结构·c++·学习·算法·排序算法
史迪仔01122 小时前
[QML] Qt5/6图像色彩空间处理
开发语言·前端·c++·qt
每天回答3个问题2 小时前
LeetCodeHot100|图、994.腐烂的橘子、207.课程表、208.实现Trie前缀树
c++·
许长安2 小时前
gRPC 数据包传输格式解析:从 Protobuf 到 HTTP/2
c++·经验分享·笔记·http·rpc
渡我白衣2 小时前
定时器与时间轮思想
linux·开发语言·前端·c++·人工智能·深度学习·神经网络