LeetCode - 7. Reverse Integer
来源:互联网 发布:matlab在线编程 编辑:程序博客网 时间:2024/05/01 09:05
这道题目看似简单,但是有一个int溢出的问题需要考虑,故而在每一步迭代计算result的时候,都要检测是否超过了Integer.MAX_VALUE,但是在result已经大于Integer.MAX_VALUE的时候检测是不行的,因为这时候result已经溢出,成为负数。故而应该在计算前检测result和(Integer.MAX_VALUE - x % 10) / 10的关系,如果大于的话就说明接下来的result累加肯定会溢出,所以这时返回0即可。代码如下:
public class Solution { public int reverse(int x) { int result = 0; boolean negative = false; if(x < 0){ negative = true; x = -x; } while(x != 0){ // Check if result overflows if(result > (Integer.MAX_VALUE - x % 10) / 10){ return 0; }else{ result = result * 10 + x % 10; } x /= 10; } return negative ? -result : result; }}
知识点:
1. 怎样从一系列的digits中回复一个数字,result = 0。注意这里有一个技巧就是在每一次迭代的时候通过使用result * 10的方法来达到移位的目的,比如这道题目中的result = result * 10 + x % 10。另外这个reverse integer的题目也是一个元方法,这个方式很可能作为以后题目中的某一部分,最好记下来
2. 检测溢出的方法:在某个数字number已经溢出的时候检测它与Integer.MAX_VALUE的关系是不行的,因为这时候已经溢出,number很可能变成了一个负数,所以应该在number迭代中变大的每一步前检测和Integer.MAX_VALUE逆向这个过程后得到数字的大小,比如说这道题目就是检测result和(Integer.MAX_VALUE - x % 10) / 10的关系
0 0
- [LeetCode]7.Reverse Integer
- LeetCode 7. Reverse Integer
- LeetCode --- 7. Reverse Integer
- LeetCode 7.Reverse Integer
- [Leetcode] 7. Reverse Integer
- [Leetcode]7.Reverse Integer
- LeetCode 7.Reverse integer
- [LeetCode] 7.Reverse Integer
- 7. Reverse Integer LeetCode
- leetcode 7. Reverse Integer
- leetcode 7. Reverse Integer
- leetcode 7. Reverse Integer
- Leetcode 7. Reverse Integer
- 【LeetCode】7.Reverse Integer
- LeetCode 7. Reverse Integer
- LeetCode *** 7. Reverse Integer
- LeetCode 7. Reverse Integer
- LeetCode-7. Reverse Integer
- [leetcode] 371. Sum of Two Integers 解题报告
- JavaScript操作SVG 提高篇
- 我所理解的String
- Problem N
- GridView高度填充屏幕
- LeetCode - 7. Reverse Integer
- Unity插件 - MeshEditor(三) 面片破碎&网格破碎
- Https Tomcat CSR生成 以及相关操作
- php
- Lua中的模块(module)和包(package)详解
- Android 框架练成 教你打造高效的图片加载框架
- Python 黑帽子 snffer ip header decoder
- C/C++中的struct
- iOS_childController篇