判断一个数是否为回文数(三种方法,详细注解)
题目要求:
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
解法一:
先将 整数转为字符串 ,然后将字符串逆转后判断与原字符串是否相等。代码如下:
public static boolean isPalindrome(int x) {//先将x逆转后转换成StringString s = new StringBuilder(x+"").reverse().toString();//判断逆转后的字符串是否与数字x转换成的字符串相等。return s.equals(x+"");
}
解法二:
通过取整和取余操作获取整数中对应的数字进行比较。
举个例子:2442 这个数字。
通过计算 2442 / 1000, 得首位2
通过计算 2442 % 10, 可得末位 2
进行比较
再将 44 取出来继续比较。依次类推,代码如下:
public static boolean isPalindrome(int x) {//当出现如下情况时一定不为回文数。if(x < 0 || x != 0 && x % 10 == 0) return false;//当出现如下情况时一定为回文数。if(x > 0 && x < 10) return true; int div = 1;//除数int left = 0; //从左边开始取的数int right = 0; // 从右边开始取的数//算出div,方便得到x的最高位。while(x / div >= 10) div *= 10; while(x > 0) {//得到此时x的最高位left = x / div;//得到此时x的最低位right = x % 10;//如果在此过程中left != right,那么x一定不为回文数if(left != right) return false;//x去掉首位和末位x = (x % div) / 10;//由于x每次去掉两位数,div每次变成原来的1/100。div /= 100;}return true;}
解法三:
这个解法的操作就是 取出后半段数字进行翻转。
这里需要注意的一个点就是由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。
具体做法如下:
1.定义一个num用来存放后半段数字,每次取出 x的个位数字。
2.每次 num = num*10 + 取出的x的个位的数字。
3. 每次过后x = x/10。直到x<num时循环结束。
代码如下:
public static boolean isPalindrome(int x) {//当出现如下情况时一定不为回文数。if(x < 0 || x != 0 && x % 10 == 0) return false;//当出现如下情况时一定为回文数。if(x > 0 && x < 10) return true; //从x的末尾开始取,直到num的位数和x相同(x有偶位数)//或者num的位数比x的位数大1(x为奇位数)int num = 0;while(x > num) {num = num*10 + x % 10;x /= 10;}//判断x为偶数的时候或x为奇数的时候return (x == num || x == num / 10);}
判断一个数是否为回文数(三种方法,详细注解)相关推荐
- C语言判断一个数是否是回文数
C语言判断一个数是否是回文数 #include <stdio.h> int main(){int num, s, y = 0;printf("请输入一个数字: ");s ...
- C++判断一个数是否为回文数palindrome的算法(附完整源码)
C++判断一个数是否为回文数palindrome的算法 C++判断一个数是否为回文数palindrome的算法完整源码(定义,实现,main函数测试) C++判断一个数是否为回文数palindrome ...
- 判断一个数是否是回文数(Java)
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net package live.every.day.Pro ...
- python判断一个数是否为回文数
判断一个数是否为回文数(正向读和反向读结果一样) num = raw_input('请输入要判断是否为回文数的数:') if (num[::-1] == num[:]): print '% ...
- 判断一个数是否为回文数C
判断一个数是否为回文数. 设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数. #include<stdio.h> intmain() { ...
- 函数习题(6):判断一个数是否是回文数
试题详情: 编写一个带整数参数的函数,其功能是返回一个数的相反数,如整数9831,函数返回值为1389.从键盘输入一个整数,调用该函数,判断这个数是否是回文数(所谓回文数,是指从左向右读和从右向左读是 ...
- 编写一个Java应用程序。用户从键盘输入一个1~99999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223
编写一个Java应用程序.用户从键盘输入一个1-99999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数.回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121.3223 ...
- wpf判断一个窗体是否运行_算法8 判断一个数是否是回文数
问题描述: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数,正着念和反着念都一样,例如:"上海自来水来自海上". 示例 1: 输入: 123 ...
- java判断五位数回文数_【视频+图文】Java经典基础练习题(五):键盘输入一个五位数,判断这个数是否为回文数...
能解决题目的代码并不是一次就可以写好的 我们需要根据我们的思路写出后通过debug模式找到不足再进行更改 多次测试后才可得到能解决题目的代码! 通过学习,练习[Java基础经典练习题],让我们一起来培 ...
最新文章
- vue element upload 控件用form-data上传方式导入xls文件
- Atlassian发布Kubernetes节点自动化扩展工具Escalator
- [OpenGL]未来视觉1-Android摄像头采集基础
- ARMS V4.3发布,应用监控全新支持内存快照分析,全息排查等功能。
- 过滤器解决Struts2重定向漏洞
- Netty with protobuf(一)
- 第8章6节MonkeyRunner启动运行过程-启动Monkey 2
- 漫步数学分析八——集合边界
- .NET4进行COM互操作--导出数据到Excel
- fedora 19 gnome 3.8 关闭笔记本盖子的动作
- yuyu终于考完了!我提前过生日了!(两者好像没有关联嘛^_^)
- Send Automatic Out Of Office replies from Outlook
- Linux-基本使用
- Python实现壁纸批量下载
- 方便他人快速给你发邮件简单代码实现 QQ邮箱一键邮我组件让你体验什么是快?
- excel中如何实现提取汉字的拼音首字母
- 青龙面板-美团外卖天天神卷
- 需求方法论:需求的理解/来源/挖掘/记录
- 网络测试工具netperf
- linux切换用户并执行命令