LeetCode 007 Reverse Integer
来源:互联网 发布:淘宝如何做详情页 编辑:程序博客网 时间:2024/05/23 18:24
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
1 逻辑很简单,每一次都在原来结果的基础上变大10倍,再加上对10的余数。然后x除以10。
2 就上面这个逻辑就能过AC。但是我觉得这道题目如果面试时候碰到,可以问的还有很多:
a 会不会溢出? 会
b 怎么处理? 可以修改函数参数,可以抛出异常,可以检查所有溢出的,都设置为0
c Math.abs(Integer.MIN_VALUE) 得到的值是多少?还是和原来一样的,为啥?因为得到+2147483648和-2147483648在32位表示上面是一样的。
3 这道题目应该10分钟内可以完成。
<span style="font-size:18px;">public class Solution { public int reverse(int x) { int sign = (x>=0)? 1 : -1 ; int temp = Math.abs(x); int ans =0; while(temp>0){ ans=ans*10+temp%10; temp/=10; } return sign*ans; }}</span>
新代码
public class Solution { public int reverse(int x) { if(x==0){ return 0; } boolean sign = x>0 ? true:false; long cur = (long)x; if(!sign){ cur = -cur; } long ans =0; while(cur>0){ ans =ans*10+cur%10; cur/=10; } if(!sign){ ans =-ans; } if(ans>Integer.MAX_VALUE || ans < Integer.MIN_VALUE){ return 0; } return (int)ans; }}
1 题目已经把溢出的检测部分加上;我用JAVA的long来做先,如果不溢出再转换成int的答案。
2 需要考虑末尾为0的情况,比如10,100。这时候如果0放在前面,要用字符串;如果不要0在前面,用数学计算。
网上看到另一种处理溢出的方式,参考:
public 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;}
0 0
- LeetCode 007 Reverse Integer
- LeetCode 007 Reverse Integer
- [LeetCode]-007-Reverse Integer
- LeetCode 007 Reverse Integer
- 007 Reverse Integer [Leetcode]
- [LeetCode]007-Reverse Integer
- LeetCode 007 Reverse Integer
- leetcode Reverse Integer 007
- leetcode 007 Reverse Integer
- LeetCode 007 Reverse Integer
- LeetCode 007: Reverse Integer
- leetcode-007-Reverse Integer
- leetcode 007 Reverse Integer
- LeetCode-007 Reverse Integer
- [LeetCode OJ][007]Reverse Integer
- 【LeetCode OJ 007】Reverse Integer
- leetcode 007 —— Reverse Integer
- leetcode之路007 Reverse Integer
- 当在写android的xml文件中出现Unexpected text found in layout file: """的解决办法
- 设计一个类,只能实现1个实例或3个实例
- 怎么用VS2005打开VS2008
- hdu,2037,今年暑假不AC
- 获取MS SqlServer 2000中字段的备注信息
- LeetCode 007 Reverse Integer
- Mysql数据库学习(四):常用Mysql C API 介绍和使用、封装一个访问Mysql数据库的类MysqlDB
- ubuntu 13 sogou input method install
- V8 引擎编译 测试 64位+VS2012
- 基于CAS实现单点登录(SSO):分享过程中遇到的问题及解决方案,让你少走弯路
- C#中Graphics的画图代码【转】
- Arm Cortex-M0新唐m052外部中断
- poj 1940 Wine Trading in Gergovia_贪心
- Tempter of the Bone DFS+奇偶剪枝