判断回文数
来源:互联网 发布:达内java视频 编辑:程序博客网 时间:2024/06/11 10:30
回文数:原数与其倒置后的数相等
1.小数没有回文数
2.负数不是回文数
3.个位数都是回文数(包括0)
方法一:转成String
(本质:判断回文字符串)
缺点:需要额外的string空间
public static boolean isPalindrome(int x) { if(x<0) return false; String a = Integer.toString(x); int len = a.length(); for(int i=0 ; i<len/2 ; i++){ if(a.charAt(i) != a.charAt(len-1-i)){ return false; } } return true; }
方法二:整数的转置
(本质:转置后比较与原数是否相等)
缺点:int类型只有32位,范围(1-2^31~2^31-1),转置结果会发生溢出
题目:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
//我的public int reverse(int x) { int a = 0,i = 0; long b = 0; while(x != 0){ a = x%10; b = b*10 +a; x = x/10; } if(b<-2147483647 || b>2147483647) return 0; else{ int result = (int)b; return result; } }
//大神的,不需要出现0xf7777777public int reverse(int x){ int result = 0; while (x != 0) { int tail = x % 10; int newResult = result * 10 + tail; if ((newResult - tail) / 10 != result) { return 0; } result = newResult; x = x / 10; } return result;}
方法三:转置一半
(本质:利用对称性,只转置一半就比较是否相等;)
好处1:转置时间短;好处2:不会发生溢出
public boolean isPalindrome(int x) { if(x<0 || (x != 0 && x%10 == 0)) //特殊情况x=10 return false; int y = 0; while(x > y){ y = y*10 + x%10; x = x/10; } return(x == y || x == y/10); }
阅读全文
0 0
- 回文/回文数的判断
- 回文数回文字符串判断
- 回文数判断
- 判断是不是回文数
- 回文数判断
- 判断回文数
- 判断回文数
- 判断回文数
- 回文数判断
- 如何判断回文数
- C判断回文数
- 判断回文数
- 判断回文数
- 回文数的判断
- java判断回文数
- 判断回文数
- 判断回文数
- 回文数的判断
- 你工作的状态?
- KVM虚拟机绑定物理CPU进行性能调优
- 内链接和外链接的区别
- 深入了解java中代码运行的过程
- Vue组件之间传递参数
- 判断回文数
- Hibernate与Mybatis的区别
- WINDOWS 10下FTP服务器搭建
- 8.3 小波变换与多分辨分析
- jfinal事物回滚实现方式
- Gh0st源代码详细剖析
- 子进程的异步等待方式
- gdb十分钟调试
- x264源代码简单分析:概述