算法LeetCode解题(C++)-8. 回文数(难度:简单)

回文数算法 利用C++语言编写的有关求回文数的一个简单算法,个人练手 立即下载

题目描述:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true
示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

解法分析:
       此题如果我们直接采用将输入转为字符串就太简单了,直接判断字符串是否回文就可以了,但是面试中不会这么简单,因此这里我们要求直接对整数进行操作。
       首先我们要排除输入为负数的情况,然后利用取整取余可以得到收尾的数字,进行比较即可,代码如下:
解法一:

bool Palindrome::isNumberPalindrome(int x)
{
    if (x < 0) return false;

    int div = 1;
    while (x /div >= 10)//取位数
    {
        div *= 10;
    }
    while (x > 0)
    {
        int left = x / div;//首位
        int right = x % 10;//末位
        if (left != right) return false;
        x = x % div / 10;
        div /= 100;
    }
    return true;
}

解法二:
       因为整数的最高位不能是0,所以回文数的最低位也不能为0,数字0除外,所以如果发现某个正数的末尾是0了,也直接返回 false 即可,然后直接收尾互换得到翻转数。同时,由于回文数的位数可奇可偶,如果是偶数的话,那么 num 就应该和x相等了;如果是奇数的话,那么最中间的数字就在 num 的最低位上了,除以 10 以后应该和x是相等的:

bool Palindrome::isNumberPalindrome(int x)
{
	if (x < 0 || (x % 10 == 0 && x != 0)) return false;
	int num = 0;
	while (x > num) {
		num = num * 10 + x % 10;
		x /= 10;
	}
	return x == num || x == num / 10;
}

运行数据如下:


       做IT行业,不管是测试、开发、运维等等,或简单或复杂的算法是必不可少的,也是大家面试工作中的必要环节,这个专栏开始和大家一起来研究著名的LeetCode,里边有上千种最常见的算法,面试工作出现几率很高,值得掌握研究,每次完成博客更新我会同步更新我的个人Github上的代码,每个算法都可以直接运行调试以供掌握,GitHub地址:https://github.com/cuiguangwei/LeetCodeProject.git,运行环境VS2015,欢迎大家一起学习讨论进步!

浮点数运算的陷阱与启示:FP16加法器/乘法器开发中的常见误区 本文深入探讨FP16加法器和乘法器开发中的常见误区,包括FP16格式解析、阶码对齐陷阱、尾数运算风险及规格化处理。通过Verilog实战代码展示防御性编程技巧,帮助开发者避免边界条件处理和异常状态管理中的错误,提升硬件设计的可靠性和效率。 阅读详情

相关推荐

AF3 ProteinDataset类的_patch方法解读

AlphaFold3 protein_dataset模块 ProteinDataset 类  _patch 方法的主要目的是围绕锚点残基(anchor residues)裁剪蛋白质数据,提取一个局部补丁(patch)作为模型输入。

qq_27390023的博客 1148

蓝桥杯练习系统BASIC-8 回文数(c++,超简洁,利用流和字符串)

试题 基础练习 回文数 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述   1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。 输出格式   按从小到大的顺序输出满足条件的四位十进制数。 #include<bits/stdc++.h> using namespace std; int main(){ string a,b; stringstream ss; for(int i=1000;i<=9999;i+..

weixin_53037232的博客 1102

联邦学习代码解读,超详细

联邦学习伪代码 损失函数使用方法 1 optimizer = optim.Adam(model.parameters()) 2 fot epoch in range(num_epoches): 3 train_loss=0 4 for step,(seq, label) in enumerate(data_loader): 5 # 损失函数 6 loss = criterion(model(seq), label.to(device)

weixin_42098322的博客 1万+

[C++] 蓝桥杯 BASIC-8 回文数

问题描述   1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。 输出格式   按从小到大的顺序输出满足条件的四位十进制数。 思路: 为了解决此类型的题目,最好是写一个判断是否为回文数的函数,后续操作也会更简单。关于如何判断是否为回文数: 将一个数中的数字一个一个取出,放入p数组 在循环中: p[i++]=x%10; x/10; 从头开始遍历p数组,遍历到一半的数组长度即可 比较p[j]是否等于p[i-j-1] 做好标记,如果2不符合,立马跳出循环,返回fa

qq_44629163的博客 513

基于OpenSSL的CA建立及证书签发(签发多域名/IP)

自签SSL证书(多域名/IP) 本文基于以下环境: 内核信息:Linux zabbix 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 系统版本:CentOS Linux release 7.6.1810 (Core) OpenSSL版本:OpenSSL 1.0.2k-fips 26 Jan 2017 【前言】 在基于OpenSSL的CA建立及证书签发一文中(后面统.

hobby云说 4647

华为云Stack扩容实战:从CMDB配置到计算节点增减容,一份避坑指南

本文详细解析华为云Stack扩容实战,从CMDB配置到计算节点增减容的全流程操作指南。通过典型场景案例和避坑建议,帮助企业高效管理计算资源扩容与减容,确保业务连续性。特别针对华为云Stack的弹性扩容能力提供专业指导,涵盖存储、网络及自动化工具链的配合使用。

weixin_30591551的博客 479

【c++基础】回文数

【c++基础】回文数 回文数的定义为:如果把一个数的各个数位上的数字颠倒过来得到的新数与原数相等,则此数是回文数,例:7,22,131,2112,31013,…都是回文数。对任意给出的一个整数n,经过一系列的处理,最后都能成为回文数。处理的方法是,该数加上它的颠倒数,例如:n=176第一次处理后    176+671=847第二次处理后    847+748=1595第三次处理后    1595+5951=7546第四次处理后    7546+6457=14003。

star-dusts的博客 6506

Cartographer实现双雷达建图

TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2 --执行一次前端匹配需要的激光扫描分段数量。关于num_subdivisions_per_laser_scan。num_laser_scans =2,--订阅激光扫描话题数量。Frame改为 前雷达laser_1 后雷达laser_2。雷达的话题由scan改为,前scan_1 后scan_2。有些人说需要改成2,但我这里改成2反而不行,1才可以。

Studying…… 1261

C++算法实践07-回文数

给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。x = 121truex = -121false从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。x = 10false从右向左读, 为 01。因此它不是一个回文数。

qq_51497103的博客 836

爬虫面试:关于爬虫破解验证码的13个经典面试题

​解释:验证码是一种用于区分人类用户和自动化程序(如爬虫)的技术,通常通过显示图形、文字或音频等方式,要求用户完成特定任务(如识别扭曲的字母、点击特定区域等)。​作用:防止恶意爬虫滥用网站资源、进行批量注册、登录破解等行为,保护网站的安全性和数据的完整性。

数据知道的博客 1万+

Sigrity OptimizePI IC Device Power Pin Inductance Analysis模式如何计算IC电源管脚电感操作指导

Sigrity OptimizePI IC Device Power Pin Inductance Analysis模式可以计算电容到IC电源管脚的电感,用于评估电容位置对于IC电源管脚的效果,如何分析,以下图为例进行说明。Capacitors:选择层面,这里选择top layer(IC在top层),下方可以选择电容的size,这里选择All Size。IC devices,输入U*, A*, B*, Q*, P*,将所有这些字母开头的器件都识别为IC。模式如何计算IC电源管脚电感操作指导。

weixin_54787054的博客 409

[NOIP1999 普及组] 回文数

string s;q是高精数组,w是q反转后的数组,l是高精度数的长度,n是进制,ans是所需的步数, s是输入高精度的字符串。这题需要会高精加,高精反转,高精判断回文数和数组存高精度等诸多基础算法。

wo_ai_luo_的博客 966

手把手教你学Simulink——基于电机驱动系统的场景实例:轮毂电机在电动汽车中的分布式驱动控制仿真

本文详细介绍了基于MATLAB/Simulink和Simscape Electrical的电动汽车轮毂电机分布式驱动控制系统建模方法。内容包括系统结构设计(轮毂电机、逆变器、控制器等模块)、完整的建模过程(从基础模块导入到车辆动力学建模)、控制器设计与转矩分配策略实现,以及仿真参数设置与结果分析。通过仿真验证了该分布式驱动系统在速度跟踪、转弯性能等方面的优异表现,为电动汽车驱动系统的研究与开发提供了有效的仿真验证平台。文中还提供了相关代码示例和资料推荐,是学习Simulink电机控制系统建模的实用指南。

MHD0815的博客 4914

【C语言刷题——Leetcode12道题】带你起飞,飞进垃圾堆

刷题之——Leetcode12道简单题,通过这12道简单题,让你对Leetcode有所新的理解,增强自己的做题能力。下面,直接进入我们的题目。👇这道题Leetcode难度归类为中等,但是我感觉我们撑一撑应该还是能做得出来的(bushi):这里的变量为了方便说明就使用我做题过程中命名的名字了🌹解题思路:首先,我们定义一个变量(eor)初始化为0去遍历按位异或数组中的所有元素,此时得到的是只出现一次的两个元素的二进制异或结果。然后去对二进制的结果进行处理:对于两个不同的数字,异或出来的二进制结果中为1的话说..

weixin_60478154的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【力扣Leetcode题解系列之0009—Palindrome Number 回文数:深入剖析与拓展】

摘要: 本文详细解析了力扣第9题「回文数」的两种解法:字符串转换法和数字翻转法。字符串法通过比较字符判断回文,时间复杂度O(log₁₀n),空间复杂度O(log₁₀n);数字翻转法通过数学运算反转数字,空间优化至O(1)。文章还提供了Python/Java/C/C++/Go多语言实现,并拓展了判断任意进制回文数的问题,建议处理负数、进制转换和字符比较。两种解法中翻转数字法更优,尤其适合限制空间的情况。

youngerwang的博客 718

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【leetcode】python算法题库——简单难度【1】

编程基础知识 算法复杂度 编写程序需要注重算法复杂度,刷题时也存在多解,如何找到最优解成为一个需要重点关注的方向。 算法复杂度:是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。应用于数学和计算机导论。同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考...

天真不无邪,hello和world 3613

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

力扣(简单+中等)50题整理总结

简单整理:200题做一遍不如50题做三遍 (干货)

卉卉的博客 1万+

【PythonCode】力扣Leetcode6~10题Python版

Leetcode6-10

weixin_43790276的博客 1859

算法LeetCode解题(C++)-12. 最长公共前缀(难度:简单)

题目描述: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 示例1: 输入: ["flower","flow","flight"] 输出: "fl" 示例2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。 解法分析: 方法一: 首先想到...

SmallBottle-CGWLMX的博客 412

算法LeetCode解题(C++)-15. 四数之和(难度:中等)

题目描述: 给定一个包含n 个整数的数组nums和一个目标值target,判断nums中是否存在四个元素 a,b,c和 d,使得a + b + c + d的值与target相等?找出所有满足条件且不重复的四元组。 注意: 答案中不可以包含重复的四元组。 示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求...

SmallBottle-CGWLMX的博客 433

回文数(C++)

在LeetCode的简单难度题目中,回文数是经典的基础算法题,考察对数字操作和字符串处理的基本能力。cout << x << " 不是回文数" << endl;- 缺点:需要额外的字符串空间,空间复杂度为 O(n)(n 为数字的位数)。cout << x << " 不是回文数" << endl;cout << x << " 是回文数" << endl;cout << x << " 是回文数" << endl;2. 逐步反转数字的后半部分,直到反转后的数大于等于原数的剩余部分。// 逐步反转后半部分数字。

2501_94634580的博客 414

力扣(LeetCode)刷题,简单+中等题(第31期)

力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

不脱发的程序猿 1万+

【力扣Leetcode题解系列之0006——Zigzag Conversion:Z 字形变换解题攻略】

摘要: 力扣6题"Z字形变换"要求将字符串按Z形排列后按行读取。通过推导字符位置规律(首尾行固定间隔、中间行交替间隔),给出了Python、Java、C、C++和Go的实现方案。算法时间复杂度O(n),空间复杂度O(1)。该题考察逻辑思维与规律发现能力,通过多语言实现展示了通用解法,并可通过调整行数扩展题目难度。

youngerwang的博客 886

LeetCode 简单难度题

Leecode 简单题1、两数相加7、整数翻转9、回文数 持续更新… 1、两数相加 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 示例: 给定 nums = [2, 7,

qq_41772794的博客 496

Leetcode 300题AC的刷题总结(C与C++)

文章目录前引闲聊力扣刷题心路历程Day1 全部看题解 看思路Day2 - Day7 基本上看题解 怀疑自己是弱智Day8 - Day15 诶~有些题自己可以做出来了Day16 - Day24 开始进入正轨 开始总结方法Day24 - Day24 动态规划学习开始折磨DAY 25 - Day40 摸索探索 每天黑人问号脸Day40 - Day66 逐渐开始好起来了 出现转折点Day 67 - Day 80 中间毅然决然打算学C++ 学成C++开始刷题Day 81 - Day 94 300AC达成300AC达

Love 6's Private Blog 1860

【力扣Leetcode题解系列之0007—— Reverse Integer:整数反转解题全析】

题目摘要 力扣第7题"Reverse Integer"要求反转32位有符号整数。本文详细解析两种解题方法:字符串转换法和纯数学法。字符串法通过类型转换和反转字符串实现,纯数学法通过循环取模运算处理数字位。两种方法均需处理边界条件,确保结果在32位整数范围内(-2147483648到2147483647),否则返回0。文章提供了P/J/C/C++/G五种语言的完整代码实现,并分析了算法的时间复杂度和空间复杂度。最后还提出进阶问题,建议处理64位整数反转以t拓展解题思路。

youngerwang的博客 950
上一篇: 算法LeetCode解题(C++)-7. 字符串转换整数 (atoi)(难度:中等)
下一篇: 算法LeetCode解题(C++)-9. 正则表达式(难度:困难)
OH,CGWLMXUP
博客等级 码龄11年 327粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值