当前位置: 首页 > news >正文

2.回文数

2.回文数

  • 题目
  • 分析题目

题目

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数
是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

分析题目

法1:基础思路是先将整数转成字符串,再将字符串逆置,检查逆置后的字符串是否和原字符串相等即可。

#include <iostream>
#include <string>
#include <algorithm>bool same_nums(int x){// 先将整型转成字符串类型int nums = x;std::string nums_string = std::to_string(nums);std::string reserve_string = nums_string;// 将字符串逆置std::reverse(reserve_string.begin(), reserve_string.end());// 比较并返回值return (nums_string == reserve_string);
}int main(){int x = 121;std::cout << same_nums(x);return 0;
}

法2:将数字的一半反转过来与前一半进行比较,但是要先排除其他几种情况(1.负数,2.个位为0的数字,因为最高位不为0,除非是数字0)

对于数字 1221,如果执行 1221 % 10,我们将得到最后一位数字 1,要得到倒数第二位数字,我们可以先通过除以 10 把最后一位数字从 1221 中移除,1221 / 10 = 122,再求出上一步结果除以 10 的余数,122 % 10 = 2,就可以得到倒数第二位数字。如果我们把最后一位数字乘以 10,再加上倒数第二位数字,1 * 10 + 2 = 12,就得到了我们想要的反转后的数字。如果继续这个过程,我们将得到更多位数的反转数字。

现在的问题是,我们如何知道反转数字的位数已经达到原始数字位数的一半?

由于整个过程我们不断将原始数字除以 10,然后给反转后的数字乘上 10,所以,当原始数字小于或等于反转后的数字时,就意味着我们已经处理了一半位数的数字了。

作者:力扣官方题解
链接:https://leetcode.cn/problems/palindrome-number/solutions/281686/hui-wen-shu-by-leetcode-solution/
来源:力扣(LeetCode)


#include <iostream>
#include <string>
#include <algorithm>bool isPalindrome(int x) {if (x < 0 || (x % 10 == 0 && x != 0)) {return false;}int reversed = 0;while (x > reversed) {reversed = reversed * 10 + x % 10;x = x / 10;}// 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。// 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,// 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。return x == reversed || x == reversed / 10;
}int main() {int x = 121;std::cout << std::boolalpha << isPalindrome(x);return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python使用内置logging模块打印日志
  • 主动学习实现领域自适应语义分割
  • 某次活动优惠券故障复盘及优化建议
  • JVM生态创新
  • Redis 数据结构深度解析:跳跃表(Skiplist)
  • vscode安装与配置本地c/c++编译调试环境
  • 详解Xilinx FPGA高速串行收发器GTX/GTP(2)--什么是GTX?
  • 【传知代码】LAD-GNN标签注意蒸馏(论文复现)
  • 研究表明产品越强调AI越招人们反感:降低情感信任 减少购买意愿
  • sftp做成一个池子
  • 区块链如何助力数字版权保护和内容创作者的权益?
  • linux nicstat
  • Linux 照片图像编辑器
  • 土木工程学报
  • uniapp HarmonyOS项目实战
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • C学习-枚举(九)
  • Druid 在有赞的实践
  • JSONP原理
  • Less 日常用法
  • SpiderData 2019年2月25日 DApp数据排行榜
  • storm drpc实例
  • Vue全家桶实现一个Web App
  • Windows Containers 大冒险: 容器网络
  • 笨办法学C 练习34:动态数组
  • 机器学习学习笔记一
  • 微信开放平台全网发布【失败】的几点排查方法
  • 移动端解决方案学习记录
  • nb
  • 白色的风信子
  • Mac 上flink的安装与启动
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (笔试题)合法字符串
  • (第30天)二叉树阶段总结
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (区间dp) (经典例题) 石子合并
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)、python程序--模拟电脑鼠走迷宫
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core 中插件式开发实现
  • .Net7 环境安装配置
  • .Net8 Blazor 尝鲜
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .vimrc 配置项
  • /etc/skel 目录作用
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @TableId注解详细介绍 mybaits 实体类主键注解