[leetcode]_Reverse Integer
2014-05-15 09:27
246 查看
经历了三道树的题后,完全崩溃中,急需一道非树图的题来挽救信心。
题目:反转数字。input : 123 , output : 321.
思路:直接,没什么好说的。
自己代码:很龊,有大量的冗余信息,还申请了一个List,虽然AC了,但有很大改进空间。
在网络上看了别人的代码,下面是精简版:(非常清晰,没有什么冗余开销,只用了两个变量)
后面有个知识:负数%正数 等于负数。因此不用对负数单独进行符号判断,可以直接算。
最优版:
和第二个版本不同的地方在于while循环的条件由 x > 0 变为了 x != 0,这样负数也能适应该while。只使用了一个变量。五行代码。漂亮。
题目:反转数字。input : 123 , output : 321.
思路:直接,没什么好说的。
自己代码:很龊,有大量的冗余信息,还申请了一个List,虽然AC了,但有很大改进空间。
public int reverse(int x) { boolean negative = false; if(x < 0) { negative = true; x = x * (-1); } List<Integer> result = new ArrayList<Integer>(); while( x / 10 > 0 ){ result.add(x % 10); x = x / 10; } result.add(x); int num = 0; int times = 1; for(int i = result.size() - 1 ; i >= 0 ; i--){ num += result.get(i) * times; times *= 10; } if(negative) return (-1)*num; else return num; }
在网络上看了别人的代码,下面是精简版:(非常清晰,没有什么冗余开销,只用了两个变量)
public int reverse(int x) { boolean negative = false; if(x < 0) { negative = true; x = x * (-1); } int temp = 0 ; while(x > 0){ temp = temp * 10 + x % 10; x = x / 10; } if(!negative) return temp; else return (-1)*temp; }
后面有个知识:负数%正数 等于负数。因此不用对负数单独进行符号判断,可以直接算。
最优版:
public int reverse(int x) { int temp = 0 ; while(x != 0){ temp = temp * 10 + x % 10; x = x / 10; } return temp; }
和第二个版本不同的地方在于while循环的条件由 x > 0 变为了 x != 0,这样负数也能适应该while。只使用了一个变量。五行代码。漂亮。
相关文章推荐
- LeetCode-Reverse Integer
- LeetCode Reverse Integer
- Leetcode[7]-Reverse Integer
- [LeetCode]-007-Reverse Integer
- leetCode:Reverse Integer
- [LeetCode84]Reverse Integer
- leetcode_reverse Integer
- Leetcode-Reverse Integer
- [Leetcode]Reverse Integer
- #7 LeetCode——Reverse Integer
- LCP007 LeetCode 7 Reverse Integer
- [leetcode] 7 reverse integer
- Leetcode-7 Reverse Integer
- leetcode Reverse Integer
- LeetCode刷题笔录 Reverse Integer
- [leetcode]Reverse Integer
- leetcode - Reverse Integer
- [LeetCode 7] Reverse Integer
- Reverse Integer -- LeetCode
- LeetCode之7 --- Reverse Integer