算法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,欢迎大家一起学习讨论进步!

相关推荐

MatGPT:在MATLAB中集成AI助手,实现代码生成与调试自动化

大语言模型(LLM)通过API接口为开发者提供了强大的自然语言理解和代码生成能力,其核心原理是基于海量数据训练的Transformer架构,能够根据上下文预测并生成连贯的文本或代码。这一技术为工程实践带来了革命性价值,特别是在科学计算和算法开发领域,能够显著提升开发效率,实现智能化的代码辅助和问题解答。在实际应用中,开发者常需在IDE与AI工具间频繁切换,导致工作流中断。MatGPT作为一个开源项目,通过深度集成ChatGPT API到MATLAB环境,有效解决了这一痛点。它支持多模态输入、预设提示词管理和

weixin_42388898的博客 500

蓝桥杯练习系统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

极验第四代滑块验证码破解(三):滑块轨迹构造

极验第四代滑块验证码破解(三):滑块轨迹构造声明 声明 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 本文关联文章超链接:

帯泪的鱼的博客 8624

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

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

qq_44629163的博客 513

再生龙(clonezilla)镜像比目标盘大——基于centos8.5

再生龙恢复到小盘遇到的问题及处理,首先是修改分区大小,进入dracut模式后再尝试恢复临时系统。

u010101453的博客 3690

ISP工程师实战笔记:5种Demosaic算法优缺点对比(含Hamilton/DFPD代码片段)

本文从ISP工程师实战角度,深入对比了五种经典Demosaic算法的优缺点。文章详细剖析了双线性插值、Hamilton、DFPD、DLMMSE和GBTF等算法的核心思想、实现差异与性能表现,并提供了Hamilton和DFPD算法的关键代码片段。重点探讨了在图像信号处理流水线中,如何根据画质、计算复杂度和功耗等工程约束进行算法选型与权衡。

weixin_42527589的博客 248

【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

3.ESP32S3 AP 配网开发实战:HTTP 与 WebSocket 协议实现

本文介绍了基于ESP32S3的AP配网实现方案,通过HTTP协议提供配网网页,利用WebSocket实现双向通信。详细解析了HTTP和WebSocket协议特点,阐述了SPIFFS文件系统存储HTML网页的方法,包括分区表配置、CMakeLists设置和代码实现。工程采用模块化设计,包含WiFi管理、Web服务器、IO扩展等组件,支持手机浏览器直接配网。测试验证了从AP热点连接到路由器切换的全流程,并总结了SPIFFS操作、WebSocket通信等核心优化点。该方案无需专用APP,适合物联网设备快速部署场景

u011697185的专栏 960

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

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

qq_51497103的博客 836

【实验】Linux下完全卸载oracle单实例(亲身体验完整版)

停止oracle数据库服务 停止监听 卸载数据库实例 因为自己懒得再弄dbca图形化界面啥的,直接采用dbca静默删除数据库实例,命令如下 dbca -silent -deleteDatabase -sourcedb orclhq -sid orcl -sysDBAUserName orcl -sysDBAPassword zte [oracle@slave ~]$ dbca -silent ...

萝卜吃鱼914的博客 1945

深度学习中常用的几种卷积(下篇):膨胀卷积、可分离卷积(深度可分离、空间可分离)、分组卷积(附Pytorch测试代码)

膨胀卷积也称为扩张卷积或空洞卷积,一般可通过对标准二维卷积的卷积核设置合适的膨胀率(具体地指卷积核元素之间的距离)实现。合理利用膨胀卷积可在不引入其他参数的同时,扩大输出中元素的感受野,提高特征的全局表示能力。下面通过展示几个不同膨胀率下的卷积核大小以及感受野变化情况,可以更直观的理解:图中灰色为输入,蓝色为卷积核,黄色为输出。1)dilation=1:表示卷积核元素之间距离为1,使用0进行大小为dilation-1=0的填充(这是默认情况),因此。

NorthSmile的博客 9014

[NOIP1999 普及组] 回文数

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

wo_ai_luo_的博客 966

DP83869HM的LWIP性能测试

E:/Xilinx/Vitis/2021.1/data/embeddedsw/ThirdParty/sw_services/lwip211_v2_0/src/contrib/ports/xilinx/netif/xemacpsif_physpeed.c文件中的。然后phy_setup_emacps中调用get_IEEE_phy_speed函数,根据PHY的ID判断出Marvell或TI或Realtek的PHY,调用对应的网速自动协商函数get_TI_phy_speed,该函数中的部分配置需要注释。

FPGA艺术家的博客 356

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

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

weixin_60478154的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

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

youngerwang的博客 718

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

天真不无邪,hello和world 3613

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

力扣(简单+中等)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、付费专栏及课程。

余额充值