c++习题25-判断字符串是否回文

目录

一,题目

二,思路

三,代码


一,题目

描述

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

输入描述

输入为一行字符串(字符串中没有空白字符,字符串长度不超过100)。

输出描述

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

用例输入 1 

abcdedcba

用例输出 1 

yes

二,思路

后来我觉得上图中的文字太红,不利于观看,而且也没必要再搞一张图,因此我将步骤搞成文字,如下👇

  1. 字符串长度不超过100,定义长度为101的字符数组a[101];
  2. 在遍历字符数组时,要进行相应的判断:字符串的第一个字符是否和字符串的最后一个字符相同,第二个字符是否和倒数第二个字符相同,等等。结合回文的定义,只要知道前一半的字符串,那么后一半的字符串就可以通过相关的表达式得到,因此不需要遍历整个字符数组,只需要遍历字符数组的的前一半strlen(a)/2(包含且作为遍历条件)就行;
  3. 例如字符串“aba”,字符数组中元素个数为3,第一个字符下标为0,倒数第一个字符的下标为2;字符串“abba”,字符数组中元素个数为4,第一个字符下标为0,倒数第一个字符的下标为3;可以看到,第一个字符的下标都是从0开始,但是倒数第一个字符的下标因字符串的长度而异,这个时候就需要写出相关的表达式,将字符与字符数组下标及字符数组中元素个数关联起来,得出:倒数第一个字符的下标=字符串长度–第一个字符的下标-1。同理可得:倒数第二个字符的下标=字符数组中元素个数–第二个字符的下标-1,等等。给定一个从0开始的变量i,依次遍历字符数组aba,当i=0时,a[0]表示字符数组的第一个字符,此时倒数第一个字符就是:a[strlen(a)-i-1]=a[3-0-1]=a[2];
  4. 一旦判断结果有不相等的,则输出“no”,并且结束整个程序。如果遍历了整个字符数组之后,程序还没有结束,则表示这个字符串是回文的,输出“yes”即可。
     

三,代码

#include <bits/stdc++.h>
using namespace std;
int main()
{char a[1001];cin >> a;for (int i = 0; a[i] != '\0' & i <= strlen(a) / 2; i++){if (a[i] != a[strlen(a) - 1 - i]){cout<<"no";return 0;}}cout<<"yes";return 0;
}

 也可以立一个旗帜,当对称的两个字符相等时,旗帜立着,如果两个字符不相等,没必要接着循环判断,此时已经知道该字符串不是回文,就让旗帜倒下,并且跳出循环。最后根据旗帜的状态来输出相应的语句即可,如下👇

#include <bits/stdc++.h>
using namespace std;
int main()
{char a[1001];cin >> a;int l = strlen(a), f = 1;for (int i = 0; a[i] != '\0' & i <= l / 2; i++){if (a[i] == a[l - 1 - i])	f = 1;else{f = 0;break;}}if (f)  cout << "yes";else	cout << "no";return 0;
}

 有问题请在评论区留言或者是私信我,回复时间不超过一天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/405915.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十二届青少年蓝桥杯Python组省赛试题

一、选择题 1.设s’Hello Lan Qiao’,执行print(s[4:11])输出的结果为()。 *选择题严禁使用程序验证 A、lo Lan Qi B、lo Lan Q C、o Lan Qi D、o Lan Q 提示&#xff1a;切片 2.循环语句for i in range(8,-4,-2):执行了几次循环()。 *选择题严禁使用程序验证 A、4 B、5 C、6…

Manim动画:相机的移动(MovingCameraScene)

1.相机的移动(MovingCameraScene) MovingCameraScene 是 Manim 中的一个类&#xff0c;用于创建可以移动的相机场景。这个类继承自 Scene&#xff0c;并提供了关于相机移动的额外功能。 MovingCameraScene(camera_class<class manim.camera.moving_camera.MovingCamera>…

Cobalt Strike 4.8 用户指南-第二节-用户界面

2.1、概述 Cobalt Strike用户界面分为两部分。界面顶部显示会话或目标的可视化。界面底部显示与你交互的每个 Cobalt Strike 功能或会话的选项卡。可以单击这两个部分之间的区域并根据自己的喜好调整它们的大小。 # 2.2、工具栏 顶部的工具栏提供对常见 Cobalt Strike功能的快…

Day23 第十站 文件IO的多路复用

#include <myhead.h>void insert_client(int *client_arr,int *len,int client) {//client_arr[n]{3,4} len&client_count,client_count2;//添加 5 client_arr[2(*len)]5(client)client_arr[*len]client;(*len); } int find_client(int *client_arr,int len,int clie…

【Python开发实践】在线商城系统——需求及需求分析

项目背景及需求 这个练习项目的设置背景是一家图书销售公司&#xff0c;为了扩大销售渠道&#xff0c;想要开通网上商城&#xff0c;利用在线博客和电子商城来销售图书。 具体需求如下&#xff1a; 每个商品可以留言 实现在线购物车处理和订单处理 实现对产品、购物车和订单的…

python依赖包安装失败的解决办法(适用于conda安装)

版权声明&#xff1a;本文为博主原创文章&#xff0c;如需转载请贴上原博文链接&#xff1a;python依赖包安装失败的解决办法&#xff08;适用于conda安装&#xff09;-CSDN博客 前言&#xff1a;这个问题之前一直困扰着我&#xff0c;因为最近要升级Anaconda-Navigator&#x…

haproxy实验

基本介绍 http://t.csdnimg.cn/Z64QVhttp://t.csdnimg.cn/Z64QV 实验环境 功能IP客户端172.25.254.233haproxy eth0:172.25.254.100 eth1:192.168.0.10 rs1eth0:192.168.0.101rs2eth0:192.168.0.102 安装haproxy yum install haproxy -y 多进程和多线程 vim /etc/hap…

基于Conda的Python版本管理与Python包管理

文章目录 前言Conda是什么Conda与Anaconda安装Anaconda安装包windows v2024.06-1安装包更多版本安装包(Windows/Mac/Linux) 安装添加环境变量安装过程中遇到的问题 使用步骤创建Python环境激活Python环境安装Python包列出和切换 Python 版本管理多个环境 总结 前言 开发环境中…

力扣 1425带限制的子序列和

这是一道 动态规划加单调队列的题&#xff0c;重点加强单调队列知识的学习 回归本题&#xff0c;这个题中&#xff0c;动态规划的部分略去&#xff0c;状态转移方程可求 单调队列部分 1维护队头 if(i-sta.front() k) sta.pop_front(); 2维护队尾 while(!sta.empty() &…

[C#]基于winform结合photocartoon算法实现人物卡通化源码实现

【官方框架】 https://github.com/minivision-ai/photo2cartoon 简介 人像卡通风格渲染的目标是&#xff0c;在保持原图像ID信息和纹理细节的同时&#xff0c;将真实照片转换为卡通风格的非真实感图像。我们的思路是&#xff0c;从大量照片/卡通数据中习得照片到卡通画的映射…

2024年思维导图工具怎样可以轻松选择

思维导图&#xff0c;作为一种直观、有效的思维工具&#xff0c;凭借其强大的信息整理能力和创意激发潜力&#xff0c;逐渐成为了人们学习、工作和生活中不可或缺的一部分。今天&#xff0c;就让我们一起走进这个充满智慧的领域&#xff0c;探索那些2024年大家都在使用的思维导…

Mac安装Typora

文章目录 介绍软件功能下载安装1.下载完成后打开downloads 双击进行安装2.将软件拖到应用程序中3.在程序坞中搜索打开4.提示安全问题就打开通用&#xff0c;安全隐私与设置5.打开成功 小结 介绍 Typora for mac 是一款简洁的轻量级的markdown编辑器、写作软件。它去除了预览窗…

C++求职LinuxWebServer面试篇(项目介绍)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支持一下呗。👍⭐️❤️ Qt5.9专栏定期更新Qt的一些项目Demo 项目与…

Tomcat性能调优

Tomcat性能调优 Tomcat9参数配置&#xff1a;Apache Tomcat 9 Configuration Reference (9.0.93) - The HTTP Connector 2.1 如何监控Tomcat的性能 Tomcat 的关键指标 Tomcat 的关键指标有吞吐量、响应时间、错误数、线程池、CPU 以及 JVM 内存。前三个指标是我们最关心的业…

JVM指令重排序

文章目录 什么是指令重排序编译器优化JIT 编译优化处理器优化重排序数据依赖性 硬件层的内存屏障指令重排的代码验证好处减少管道阻塞提高缓存利用率利用并行执行单元性能提升更好地利用硬件资源 问题内存可见性问题编程复杂性增加调试困难 解决方案&#xff1a;Java内存模型&a…

Pinia

搭建pinia环境 1.引入依赖 npm i pinia 2.在main.ts中引入pinia 准备一个基本的效果 <template><h2>测试一下pinia</h2><br><span>当前求和为&#xff1a;{{ sum }}</span><br><select v-model.number"n"><o…

2 kubeflow系统架构 学习笔记

1 Kubeflow生态系统 2 生态系统说明 2.1. Hardware&#xff08;硬件层&#xff09; 提供计算资源的底层硬件支持。GPU&#xff08;如NVIDIA&#xff09;通常用于加速机器学习和深度学习的计算任务&#xff0c;而Intel和AMD则可能提供CPU计算资源。 2.2. Infrastructure&…

[OC]萝卜圈玩行车记录仪

图1-1&#xff0c;你的手动小车 代码是 #机器人驱动主程序 #请在main中编写您自己的机器人驱动代码 import tkinter as tk import turtle v0 # 速度 accFalse;slowFalse;leftFalse;rightFalse # 按键状态 step0.5 # 一次速度变化量 def keyup_press(event):global acc;accTru…

「数组」希尔排序 / 区间增量优化(C++)

目录 概述 思路 核心概念&#xff1a;增量d 算法过程 流程 Code 优化方案 区间增量优化 Code(pro) 复杂度 概述 我们在「数组」冒泡排序|选择排序|插入排序 / 及优化方案&#xff08;C&#xff09;中讲解了插入排序。 它有这么两个特点&#xff1a; ①待排序元素较…

[Qt][Qt 文件]详细讲解

目录 1.输入输出设备类2.文件读写类3.文件和目录信息类 1.输入输出设备类 在Qt中&#xff0c;⽂件读写的类为QFile&#xff0c;其⽗类为QFileDevice QFileDevice提供了⽂件交互操作的底层功能QFileDevice的⽗类是QIODevice&#xff0c;其⽗类为QObject QIODevice是Qt中所有I/O…