leetcode第七题(easy)——Reverse Integer
2015-05-16 21:10
267 查看
题目描述如下:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
我为这道题尝试了3种解法,一开始的解法运行时间为499ms,觉得太慢了,于是在网上参考了别人的思路,的确是快了一些,但是后来觉得在刷题的时候没这必要,运行出来就行了。三种解法的思路及代码如下:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
我为这道题尝试了3种解法,一开始的解法运行时间为499ms,觉得太慢了,于是在网上参考了别人的思路,的确是快了一些,但是后来觉得在刷题的时候没这必要,运行出来就行了。三种解法的思路及代码如下:
1.首先判断是正数还是负数,设置一个res变量,负数为true,正数为false。然后再将整数转成字符串,由于StringBuffer和StringBuilder有反转的方法,于是构造一个stringbuffer对象,将其反转后再变为字符串,最后再将字符串转成Int类型,此处要捕获异常,当溢出时返回0。
public int reverse1(int x){//499ms boolean res=false; String s; if(x>0){ s=""+x; }else{ x=-x; s=""+x; res=true; } StringBuffer sb = new StringBuffer(s); s = sb.reverse().toString(); try{ x = Integer.parseInt(s); }catch(NumberFormatException e){ System.out.println(e); return 0; } if(res){ return -x; }else{ return x; } }
2.这个是参考别人的,但是不是很了解这个是怎么判断溢出的
public int reverse2(int x){//306ms int result = 0; int mod = 0; while(x != 0) { mod = x % 10; if (result > 0) { if (result > Integer.MAX_VALUE/10 || (result == Integer.MAX_VALUE / 10 && mod > Integer.MAX_VALUE % 10)) { return 0; } } else { if (result < Integer.MIN_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && mod < Integer.MIN_VALUE % 10)) { return 0; } } result = result * 10 + mod; x /= 10; } return result; }
3.这个思路更好理解,和第二种思路差不多,只不过判断溢出的方式不一样,设置一个long类型的testresult,通过result和testresult的比较,不相等就表示溢出了,则返回0;否则返回result
public int reverse3(int x) { //305ms int result = 0; int mod = 0; long testresult=0; while(x != 0) { mod = x % 10; result = result * 10 + mod; testresult = testresult * 10 + mod; x /= 10; } if(testresult!=result){ return 0; } return result; }
相关文章推荐
- leetcode第七题--Reverse Integer
- LeetCode-easy-Reverse Integer
- [Leetcode 7, Easy] Reverse integer
- 【Leetcode】【Easy】Reverse Integer
- LeetCode第七题,Reverse Integer
- Leetcode第七题_Reverse Integer
- 【leetcode】Reverse Integer
- 【Leetcode-easy-572】Subtree of Another Tree
- LeetCode-Easy部分中标签为Two Pointers 345. Reverse Vowels of a String
- [Leetcode 205, Easy] Isomorphic Strings
- Leetcode 443. String Compression (Easy)
- leetcode----Reverse Integer
- Leetcode--easy系列2
- 【LeetCode】461.Hamming Distance_EASY(一)
- 【Leetcode-Easy-169】 Majority Element
- Leetcode 232. Implement Queue using Stacks (Easy) (cpp)
- 用java解leetcode上的easy题(开始探险)
- 【leetcode】Remove Linked List Elements(easy)
- LeetCode-Easy部分中标签为LinkedList 160. Intersection of Two Linked Lists
- 决战Leetcode: easy part(51-96)