Reverse Integer - Leetcode 算法详解
2017-08-23 23:42
204 查看
7. Reverse Integer
这道题是LeetCode上难度为easy的题,原题如下:
Reverse digits of an integer.Example1: x = 123, return 321
Example2: x = -123, return -321
click to show spoilers.
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
题目的大意是给定一个数字,将每一位反向排序后输出,要考虑到整数的正负号,以及数字溢出。解题的难点主要在两处:
如何将颠倒数字顺序输出?
下面的示例代码遵循这样的思路: 先将输入数字的做绝对值计算,然后对数字取余数,得到个位数字(记为变量res),然后再将原数字除10将数字整体右移(十位变个位),再将原数字个位(res)乘10变成新数字十位,加上原来数字右移后的个位数字,至此个位十位顺序调换,再迭代如上操作,即可翻转。最后通过输入数字与0的关系,对输出添加正负号。
如何判断数字是否溢出?
以下是Java中 Integer 和Long类型的最大范围,注意到Integer类型的最小值的绝对值不等于最大值,因此我们在程序中单独考虑。Integer.MIN_VALUE = -2147483648 Integer.MAX_VALUE = 2147483647 Long.MIN_VALUE = -9223372036854775808 Long.MAX_VALUE = 9223372036854775807
Java程序代码如下:
public int reverse(int x) { if(x==Integer.MIN_VALUE) return 0; int num = Math.abs(x); int res = 0; while(num!=0) { if(res>(Integer.MAX_VALUE-num%10)/10) return 0; res = res*10+num%10; num /= 10; } return x>0?res:-res; }
相关文章推荐
- 【python】【leetcode】【算法题目7—Reverse Integer】
- leetcode:Reverse Integer(反转数字)【算法面试题】
- 算法分析与设计课程——LeetCode刷题之Reverse Integer
- 【LeetCode-面试算法经典-Java实现】【007-Reverse Integer(翻转整数)】
- leetcode 75: Reverse digits of an integer.
- LeetCode Reverse Integer
- leetcode Reverse Integer
- leetcode:Reverse Linked List II (反转链表中的一部分)【面试算法题】
- 【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】
- Reverse Integer LeetCode
- leetcode 7 Reverse Integer golang实现
- leetcode 7 Reverse digits of an integer
- LeetCode Reverse Integer(C)
- LeetCode: Reverse Integer
- LeetCode (7)Reverse Integer
- leetcode:Reverse Integer【Python版】
- 【Leetcode】Reverse Integer(easy)
- LeetCode Reverse Integer
- leetcode——Reverse Integer
- Reverse digits of an integer_Leetcode_#7