回文数(或迴文數)是指一个像14641这样“对称”的数,即:将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。
判定一个正整数是否是一个回文数。例如12121是回文数,而1231不是回文数。
解法1:转换成字符串再判断
要判断一个整数是否是回文数,最自然的想法是把整数转换成一个字符串,然后根据回文的对称特性进行判断。数字转换为字符串可以通过itoa函数实现,判断字符串是否为回文字符串代码如下:
bool isPalindrome(string &str)
{int begin = 0, end = str.length()-1;while (begin < end) {if (str[begin] == str[end]) {begin++;end--;} else {return false;}}return true;
}

  

解法2:数字翻转法
因为是整数,所以可以求出该整数的翻转后的数值,看是否与原来整数相等。如果相等,则是回文数,否则不是。翻转整数代码如下,返回值为翻转后的整数。如12321翻转后为12321,所以是回文数;而1231翻转后为1321,与1231不相等,所以不是回文数。
int reverse(int num)
{assert(num >= 0); int rev = 0;while (num != 0) {rev = rev * 10 + num % 10;num /= 10;}return rev;
}

  

但是这里有个潜在的问题就是翻转后的整数可能会溢出,当然我们可以用long long之类的类型来保存翻转结果。但是这个解法总的来看并不完美,我们需要找一个更通用的解法。
解法3:数字位判断法
我们可以找到一个更通用的解法,那就是先比较整数的第1位和最后1位是否相等,如果不等,则直接返回false;若相等,则接下去判断剩下的位置,如同回文字符串判断的过程一样。代码如下:
bool isPalindrome(int x)
{if (x < 0) return false;int div = 1;while (x / div >= 10) {div *= 10;}while (x != 0) {int l = x / div;  int r = x % 10;if (l != r) return false;x = (x % div) / 10;div /= 100;}return true;
}

如整数为121,则div初始会设为100,因此l=21/100=1是整数的第1位,而r=121%10=1是最后1位。这两位相等,则继续循环,设置x为第2为2,此时div除以100变成1,之所以div除以100是因为每次比较了两个位。

转载于:https://www.cnblogs.com/Lolita-web/p/10457184.html

17.判断一个整数是否是回文数相关推荐

  1. python判断回文数_Python实现判断一个整数是否为回文数算法示例

    本文实例讲述了Python实现判断一个整数是否为回文数算法.分享给大家供大家参考,具体如下: 第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较 def isPalindrome(se ...

  2. python判断回文_Python实现判断一个整数是否为回文数算法示例

    本文实例讲述了Python实现判断一个整数是否为回文数算法.分享给大家供大家参考,具体如下: 第一个思路是先将整数转换为字符串,再将字符串翻转并与原字符串做比较 def isPalindrome(se ...

  3. 【Python】Python实验:回文是一个正向和逆向都相同的整数,如123454321、463364、9889。编写函数判断一个整数是否是回文数。

    回文是一个正向和逆向都相同的整数,如123454321.463364.9889.编写函数判断一个整数是否是回文数. 算法源码 def huiwen(n):if n==n[::-1]: ##正序和倒序是 ...

  4. 判断一个整数是否为回文数

    一.题目描述 二.思路 (1)可以将该整数转换成字符串,根据字符串的长度奇偶性来确定中间位置,然后首尾进行对比是否是回文数字.此时需要额外空间来存储字符串,然后进行判断 (2)可以将整数的最后一半数字 ...

  5. 【Python】判断一个整数是否是回文数的三种方法

    方法一:逐位判断 原理: 用一个while循环,将一个数每次都取出首位和末位,判断是否相等,只要有一次不相等退出即可. 回文数的判断条件:加入一个变量位数,如果这个数是奇数,位数为1时,即最中间那一位 ...

  6. 判断一个整数是否是回文数

    2019独角兽企业重金招聘Python工程师标准>>> 这段代码是我做leetcode练习题时写的,虽然实现了回文数的识别,但是倒置后的数字不是一个完整的数字,而是由几个输出拼接而成 ...

  7. C++ leetCode 判断一个整数是否为回文数 9. 回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    一.思路: 遍历到中间位置,如果第i个和第size-i-1个不相等,将不为回文数,反之,为回文数 bool isPalindrome(int x) {string strX = to_string(x ...

  8. 编写一个函数判断一个整数是否为回文数。如果一个属从正的方向读和从反的方向读的结果相同,则该数就是回文数。...

    bool palindrome(int b) { int k = 0; char a[1000]; do { int c; c = b % 10; char d; for (int i = 0; i ...

  9. (c语言)判断一个正整数是否是回文数

    (c语言)判断一个正整数是否是回文数 回文数是指从左到右和从右到左读这个数是一样的.例如:1,101,1221都是回文数. #include<stdio.h> #include<st ...

最新文章

  1. 《Ext JS权威指南》节选:在Visual Studio中实现Ext JS智能提示
  2. ios textview间距_iOS 设置TextView控件内容行间距
  3. 飚王硬盘盒怎么样_ORICO M.2固态移动硬盘盒众测分享:移动存储也高速
  4. 数据分析词数统计和词的重要程度统计
  5. winPcap编程之打开适配器并捕获数据包(四 转)
  6. 解决:Whitelabel Error Page This application has no explicit mapping for /error...UnknownHostException
  7. 7读不出来卡显示无服务器,win7识别不了网络如何解决_win7显示未识别网络的处理方法...
  8. 怎么在地图上画圆 php,SOSO地图API使用(一)在地图上画圆实现思路与代码
  9. 为什么农村出来的大学生大多混得比较差?
  10. character-RNN模型介绍以及代码解析
  11. MySQL数据库性能优化方法,一篇给你总结了
  12. scala中的Unit
  13. 怎样看股市K线图指标之市场盈亏指标CYS
  14. Sqlmap中代理及其他常用参数
  15. PCB设计技巧10大技巧
  16. <JVM上篇:内存与垃圾回收篇>13-垃圾回收器
  17. SVN 错误 Access to SVN Repository Forbidden的原因及解决方法
  18. Mysql 条件查询(like、between、and、in······)
  19. 消防应急照明系统在某数据中心项目的应用
  20. Python 金融量化 RSI相对强弱指标

热门文章

  1. excel几个数相加等于某个数_[求助]如何能计算出几个数字相加等于一个给定的数...
  2. python os.forkos.wait
  3. 2.7 RMSprop
  4. 2020年4月中国编程语言排行榜程序员工资统计,人工智能工资大跌
  5. python怎么用pip下载_python怎么用pip安装包
  6. java进销存系统源码_青云源码——最新企业进销存管理系统源码分享
  7. Windows Server 2012远程刷新客户端组策略及IE代理设置图文教程
  8. FusionSphere整体介绍
  9. Spring Boot学习总结(23)——Spring Boot 实践经验总结
  10. 分布式系统中的幂等设计