Leetcode 7 Reverse Integer 反转数字
2015-04-20 10:28
507 查看
题目:
Reverse digits of an integer.
Example1: x =
123, return 321
Example2: x = -123, return -321
翻译就是把一个数字反过来输出。
解题思路:这道题目看起来比较简单。无非就是一个数字取个位,作为另一个高位。无非是在10的运算。
代码1:
因为java的Integer.MAX_V***LUE
2e31-1,MIN_VALUE -2e31。
即在快要到边界的时候乘以10 便会出现溢出的问题。
因此加上判断条件
代码2:
Reverse digits of an integer.
Example1: x =
123, return 321
Example2: x = -123, return -321
翻译就是把一个数字反过来输出。
解题思路:这道题目看起来比较简单。无非就是一个数字取个位,作为另一个高位。无非是在10的运算。
代码1:
public static int reverse2(int x) { int rev = 0; boolean flag = false;//正负数 if(x < 0) { x = 0 -x; flag = true; } while(x > 0) { rev = x %10 +rev *10; x = x/10; } if(flag) { rev = 0 -rev; } return rev; }这个是我初始想到的代码。提交上去后,题目给了个数为1534236469,结果最后结果跑出来是1056389759。后来想想是溢出的问题。
因为java的Integer.MAX_V***LUE
2e31-1,MIN_VALUE -2e31。
即在快要到边界的时候乘以10 便会出现溢出的问题。
因此加上判断条件
if (rev != 0 && Integer.MAX_VALUE / rev < 10) return 0;最后整合下代码,最终版本为
代码2:
public static int reverse(int x) { int rev = 0; while(x!=0) { if (rev != 0 && Integer.MAX_VALUE / rev < 10 && Integer.MAX_VALUE / rev > -10) return 0; rev = rev*10 + x%10; x = x/10; } return rev; }
相关文章推荐
- leetcode:Reverse Integer(反转数字)【算法面试题】
- LeetCode 7 Reverse Integer(反转数字)
- leetcode——Reverse Integer 反转整数数字(AC)
- Leetcode 07 Reverse Integer(数字反转) && 09 Palindrome number(回文判断)
- LeetCode7——Reverse Integer(将一个整数反转,注意溢出的处理)
- leetcode reverse Integer(反转整数)
- [Leetcode] reverse integer 反转整数
- LeetCode--Reverse Integer(整数反转)Python
- 【LeetCode】- Reverse Integer(将一个整数反转)
- (LeetCode)Reverse Integer --- 反转整数
- LeetCode 7. Reverse Integer C++--带正负号数字反转
- LeetCode练习-翻转数字(Reverse Integer)
- 【leetcode】Reverse Integer整数反转----Java代码实现
- Reverse Integer (数字反转)
- Leetcode Reverse Integer 反转整数
- 第三周Reverse Integer反转数字
- Reverse Integer 翻转数字@LeetCode
- LeetCode Reverse Integer 反转整数
- [置顶] [LeetCode] Reverse Integer 整数反转
- leetcode_7. Reverse Integer 反转整数的各个数字