c++判断字符串是否为回文

2023-05-16

回文是指正读反读均相同的字符序列。如"abba"和”abdba”均是回文,但"good"不是回文。

Solution1

使用reverse()函数将字符串反转,与原字符串比较,若相同,则是回文,否则不是。例如:将"abba"反转得到"abba",和原字符串相同。将"good"反转得到"doog",和原字符串不同。

Code
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
	string a;
	cin >> a;
	string b = a;
	reverse(b.begin(), b.end());//反转字符串
	if (a == b) cout << a << "是回文串" << endl;
	else cout << a << "不是回文串" << endl;
	return 0;
}
Solution2

利用双指针,从两边往中间扫

Code1
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
	string a;
	cin>>a;
	string b=a;
	int l=0,r=b.length()-1;
    while(l<r){
        swap(b[l],b[r]);
        l++;r--;
    }
    if (a == b) cout << a << "是回文串" << endl;
    else cout << a << "不是回文串" << endl;
	return 0;
}
Code2
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
	string a;
	cin>>a;
	int l=0,r=a.length()-1;
    while(l<r){
        if(a[l] != a[r]) break;
        l++;r--;
    }
    if (l < r) cout << a << "不是回文串" << endl;
    else cout << a << "是回文串" << endl;
	return 0;
}
Solution3

利用栈后进先出的特点,将字符串的每个字符都入栈,再逐个出栈,可得到反读的字符串。可以利用STL库的stack,方便实现。

Code
#include<iostream>
#include<string>
#include<algorithm>
#include<stack>
using namespace std;
int main() {
	stack<char> p;
	string a;
	cin >> a;
	for (int i = 0; i < a.length(); i++) p.push(a[i]); //入栈
	string b;
	while (!p.empty()) {//判断栈非空
		 b += p.top();  //取栈顶元素
		 p.pop();       //栈顶元素出栈
	}
	if (a == b) cout << a << "是回文串" << endl;
	else cout << a << "不是回文串" << endl;
	return 0;
}
Solution4

最近在看数据结构的书,所以自己实现了一下链栈(STL它不香吗

Code
#include<iostream>
#include<string>
#include<algorithm>
#include<stack>
using namespace std;
struct Node
{
 	char data;
 	Node* next;
};
void great_list(Node*& head)  //创建空链表无头结点
{
    head = NULL;
}
void set_list(Node*& head,string s) { //将一个字符串的每个字符入栈
 	Node* p;
 	for (int i = 0; i < s.length(); i++) {
  		p = new Node;
  		p->data = s[i];
  		p->next = head;
  		head = p;
 	}
}
void pop(Node*& head) {//栈顶元素出栈
 	Node* p = head;
 	head = head->next;
 	delete p;
}
char top(Node*& head) { //取栈顶
 	if (head) return head->data;
}
int main() {
 	Node* head;
 	great_list(head);
 	string a;
 	cin >> a;
	string b;
	set_list(head, a);//入栈
	while (head){//判断栈非空
	  	b += top(head);//取栈顶元素
	  	pop(head);//栈顶元素出栈
	}
	if (a == b) cout <<a<< "是回文串" << endl;
	else cout <<a<< "不是回文串" << endl;
	return 0;
}
Sample
abbba
abbba是回文串
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++判断字符串是否为回文 的相关文章

  • java zip文件解压(含有密码解压)

    maven需要加入以下依赖 xff1a lt dependency gt lt groupId gt net lingala zip4j lt groupId gt lt artifactId gt zip4j lt artifactId
  • pcl用PCLVisualizer可视化ply数据,显示界面卡死问题

    pcl用PCLVisualizer可视化ply数据 xff0c 显示界面卡死问题 在addPointCloud后面加一句viwer gt spin
  • 2020-11-08

    超级好用的免费PDF转word网站 超级PDF https xpdf net 一个超级好用的PDF处理网站 xff0c 功能强大 这个网站提供了丰富的PDF转换 xff0c 处理功能 xff0c 支持OCR识别 操作简单 xff0c 速度快
  • 2021-04-23

    看起来像传指针的传值的函数参数传递 span class token keyword void span span class token function func span span class token punctuation sp
  • 3D slicer编译过程中遇到的问题总结

    3D slicer编译过程中遇到的问题总结系列一 1 xff0c 有关python部分编译 1 gt 已启动生成 项目 python setuptools 配置 Debug x64 1 gt Creating directories for
  • Haskell大世界+思考

    文章目录 基石般灵活表现自由的抽象范式编程语言是什么 xff1f 推荐论文大佬建议MetaHaskell 实现类型系统语言抽象 模式问题解决方案 Haskell在工业界有哪些实际的应用 xff1f 关于fp的一些思考递归是循环的超集 同样是
  • Promox VE(PVE) 连接wifi配置

    pve一个管理虚拟机和容器的平台 xff0c 由于是开源免费的 xff0c 被很多小伙伴用来搭建自己的 34 all in one 34 主机 我也看过很多相关文章和教程 xff0c 看着大家玩的不亦乐乎 xff0c 再看着自己半退役的笔记
  • vscode的conda环境切换和快捷键终端切换文件所在路径

    最近miniconda太多环境 xff0c vs code编辑切换太麻烦 xff0c 于是整个快捷键 cmd 43 shift 43 p设置user settingup json 34 terminal integrated shell w
  • SonarLint黄线警告python:S125

    SonarLint黄线警告python S125 刚安装了SonarLint到我的vscode上 xff0c 发现有黄线警告说我的代码风格不好 黄线的原因是 xff1a 程序员不应该注释掉代码 xff0c 因为它使程序膨胀 xff0c 降低
  • mark点Z3学习资料整理

    文章目录 Anything is NothingLess is MoreSMTz3 classeslogic programming Reasoning符号推理策略strategiesFixed point关系代数datalog程序分析验证
  • windows和wsl设置代理

    wsl查看host ip用脚本试试查看具体当下宿主机和wsl自身不同的两个ip或者 分配固定ip 或者cmd用ipconfig看或者localhost 127 0 0 1 xff0c 然后区分socks5还是http协议 xff0c 然后查
  • 数学物理计算机的思考

    一些关于数学物理计算机的妄言 如果说冥冥之中有一种真理 自然世界的运作规律 61 真理 61 自然科学 xff0c 致敬牛顿的那本著名的几何书 xff0c 我会把它叫做 自然哲学 以下我说的每句话 xff0c 都蕴涵着我自己的生活经历 xf
  • 一个知乎提问引发的(思考)[https://www.zhihu.com/question/263431508/answer/574084280]

    表示很喜欢这个问题 xff0c 深有同感 xff01 这个问题也让我这种杂家谈谈想法吧 xff0c 看题主应该是骨骼精奇的奇才 xff0c 我假想读者是 小学生 xff0c 所以 xff0c 觉得我啰嗦的大大 xff0c 忍忍吧 xff0c
  • Johnson算法PlantSimulation解决两机器多作业排版问题

    生产系统仿真应用教程PlantSimulation 周金平Johnson算法代码写错了的源代码 xff1a is i j m n y integer do y 61 Jobs ydim m 61 1 n 61 y for i 61 1 to
  • 组成原理---补码加减法,原码一两位乘法,补码一两位乘法,754标准

    翻转课堂 xff0c 学生讲课 xff0c 笔记顺便贴上来吧 万一有人需要呢 这里754标准其实可以看https blog csdn net xingqingly article details 18981671 xff0c 我没有把尾数规
  • POSIX 网络API原理

    1 POSIX 网络API 网络编程常用的API xff1a 2 IO函数的内部过程分析 2 1 Socket socket作为网络编程的第一个函数 xff0c 主要作用是用于创建句柄和对应的TCB控制块 xff1b 建立起文件描述符和内部
  • 卷积神经网络(CNN)的平移不变性和旋转不变性。

    文章目录 不变性的介绍不变性的原理 不变性的介绍 不变性意味着即使目标的外观发生了某种变化 xff0c 但是你依然可以把它识别出来 旋转不变性和平移不变性 xff1a 通俗的讲 xff0c 我给你一张图片 xff0c 你识别出来这是只狗 x
  • ubuntu22.04版本APPimage启动报错问题解决

    文章目录 前言 xff1a 报错信息解决方法结果展示你以为就完了 xff1f 天真 xff01 结果展示2结语 前言 xff1a 因为个人比较喜欢提前使用一些较新的软件 系统之类的东西 xff0c 所有在ubuntu22刚发行就选择了升级
  • 音视频封装原理简介

    1 什么是数据化封住和解封装 xff1f 2 视频数据的封装 3 什么是音视频的封装格式 4 封装格式
  • wsl 配置 java 环境以及使用 vscode 调试

    wsl 配置 java 环境以及使用 vscode 调试 原文 xff1a https blog csdn net huiruwei1020 article details 107775782 按照原文我无法运行 xff0c 按照Stack

随机推荐

  • L13. hrtimer使用实例(高精度定时器)

    1 简介 随着内核不断更新演进 xff0c 内核对定时器的分辨率要求越来越高 硬件的高速发展也逐渐能够满足内核的这一要求 xff0c 因此内核针对硬件提供的便利 xff0c 开始设计了更高分辨率的定时器 xff08 hrtimer xff0
  • 鸿蒙操作系统下载

    简介 华为最近开源了自产的操作系统 Harmony 凑一波热闹 xff0c 下载源码看看 横看成岭侧成峰 xff0c 远近高低各不同 由于目前水平有限 xff0c 所以不对鸿蒙操作系统做出过多评价 xff0c 只是下载来学习一下 愿景是希望
  • 5. C++ 抽象类

    1 简介 抽象类往往用来表征对问题领域进行分析 设计中得出的抽象概念 xff0c 是对一系列看上去不同 xff0c 但是本质上相同的具体概念的抽象 通常在编程语句中用 abstract 修饰的类是抽象类 在C 43 43 中 xff0c 含
  • C++并发编程 - 互斥锁(lock_guard和unique_lock)

    C 43 43 并发编程 互斥锁 在多线程的编程中 xff0c 共享数据的修改限制是必不可少的环节 期望的是 当一个线程访问共享数据期间 xff0c 此数据不应该被其他线程修改 xff1b 当某个线程修改了共享数据 xff0c 应通知其他线
  • CMake搭建编译环境总结

    前言 交叉编译算是每个嵌入式开发者都会经历的一道坎吧 xff0c 通俗的描述就是搭建Arm板代码编译环境 xff0c 让代码能够在Arm板子上跑起来 常用到的编译工具为Makefile和CMake xff0c 本篇记录下CMake的常用技巧
  • C++ lambda表达式

    lambda表达式 目录 一 开篇二 lambda初识三 lambda基本用法四 lambda表达式捕获列表五 总结六 参考 一 开篇 lambda表达式是C 43 43 11引进的一个新特性 xff0c 其写法比较新颖 xff0c 经常被
  • 网络编程 - Linux socket编程

    前言 socket 套接字 是网络编程编程的一种技巧 通过socket不仅可以实现跨进程通信 xff0c 还可以实现跨主机的网络通信 使用这种技术 xff0c 就可以实现全国各地的通讯 例如 xff1a 深圳的一台电脑接收来自北京一台电脑发
  • 记一次STM32F3单片机无法下程序解决方法

    不知道什么操作导致keil5下载STM32F3的程序时报以下错误 xff1a JLink info DLL V4 90 compiled Jul 28 2014 10 35 20 Firmware J Link OB STM32F072 C
  • SpringBoot集成MyBatis-Plus代码生成器(V3.5.1)

    1 说明 MyBatis Plus在3 5 1版本之后 xff0c 改变了代码生成器的用法 xff0c 由于对历史版本的不兼容 xff0c 这次重新梳理一份新的用法 3 5 1版本之前的代码生成器请参考 xff1a SpringBoot集成
  • 插上串口设备导致鼠标乱飘

    今天再一次遇见这种怪事 xff0c 屏幕上鼠标到处乱飘不受控制 xff0c 之前也遇到过 xff0c 没仔细研究 最终在网上搜寻答案发现是插上串口设备导致的问题 xff0c 因为串口一直不停的发送数据 xff0c 会导致电脑将其误识别成鼠标
  • openstack(queens)部署Zun服务

    zun安装手册 Zun是Openstack中提供容器管理服务的组件 xff0c 本文使用的是centos7上的openstack xff08 queens xff09 环境 目录 zun安装手册 3 在controller节点上安装zun服
  • Supervisor 定期重启指定进程

    简介 supervisor 是用 Python 开发的一套通用的进程管理程序 xff0c 能将一个普通的命令行进程变为后台 daemon xff0c 并监控进程状态 xff0c 异常退出时能自动重启 它是通过 fork exec 的方式把这
  • linux 源码安装 xrdp

    前言 xrdp可以做两件事 xff0c 第一件事就是可以使得linux支持RDP协议 xff0c 使得linux桌面能够通过mstsc连接 xff0c 第二件事就是RDP代理 xff0c 我们能通过xrdp连接到其他人的RDP资源 前者 x
  • 编译openssl时发生错误

    编译openssl时发生错误 error OPENSSL ALGORITHM DEFINES no longer supported 原理参考 xff08 由于同时安装了openssl 1 1和openssl 1 0 xff09 版本 xf
  • Linux 非源码安装 xrdp

    基本环境说明 我的是Centos 7 mini 或者 Ubuntu最小化安装 xff0c 想通过mstsc连接到xrdp xff0c 再通过xrdp连接到 Centos 7 mini xff0c 不安装桌面 xff0c 只打开 xterm
  • Selenium常用实战功能指南

    文章目录 自动化前言元素定位的几种方法id定位name定位link text定位partial link text定位xpath定位 xff08 重点 xff09 css定位常见问题 元素操作的常用方法基本方法send keys textg
  • RISC-V指令集架构------RV32I基础整数指令集

    0 基本整数指令集的分类 RISC V指令集分为基础指令集和扩展指令集 xff0c 此外又根据不同的处理器位宽分为32位 64位和128位指令集 xff0c 比如RV32I就表示32位处理器的基本整数指令集 xff0c 此外 xff0c 为
  • 如何在ubuntu22.04版本上安装libssl1.1?

    直接使用sudo apt get install会提示找不到软件包输入一下命令即可 xff1a echo 34 deb http security ubuntu com ubuntu focal security main 34 sudo
  • vue2学习总结一

    1 vue介绍 Vue是一套用于构建用户界面 xff08 数据 gt 界面 xff09 的渐进式 xff08 简单应用 xff08 一个轻量小巧的核心库 xff09 gt 复杂应用 xff08 可以引入各种各样的Vue插件 xff09 xf
  • c++判断字符串是否为回文

    回文是指正读反读均相同的字符序列 如 34 abba 34 和 abdba 均是回文 xff0c 但 34 good 34 不是回文 Solution1 使用reverse 函数将字符串反转 xff0c 与原字符串比较 xff0c 若相同