Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
一开始呢,我的思路是很好的。于是我写下了这些代码
public class Solution {
public int reverse(int x) {
int symbol = 1;
if (x < 0){
symbol = -1;
x *= (-1);
}
StringBuilder res_str = new StringBuilder();
String str = "" + x;
for(int i = 0; i < str.length(); i++){
char ch = str.charAt(i);
res_str.insert(0,ch);
}
Integer res = Integer.parseInt(res_str.toString());
if (symbol == -1)
return -1*(res);
else
return res;
}
}
但是报错了。。。我真的是很崩溃的。
Run Code Result:
Your input
1534236469
Your answer
Line 14: java.lang.NumberFormatException: For input string: "9646324351"
Expected answer
0
Runtime: N/A
我并不知道该怎么办了。。。
于是我抄来了别人写的。。代码。。。真的一对比,才知道自己渣渣,大脑就像不运作了一样的。。。蠢。。。。
public class Solution {
public int reverse(int x) {
long result = 0;
while( x != 0){
result = result*10 + x % 10;
x /= 10;
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE)
return 0;
}
return (int)(result);
}
}
然后下面的方法也是抄来的,,是对于我愚蠢的算法的完美拯救
public class Solution {
public int reverse(int x) {
StringBuilder num = new StringBuilder();
int val = 0;
if (x > 0){
num = num.append(x).reverse();
try{
val = (int) Integer.parseInt(num.toString());
}catch (NumberFormatException e){
return 0;
}
return val;
}
else{
x = -x;
num = num.append(x).reverse();
try{
val = (int) Integer.parseInt(num.toString());
}catch(NumberFormatException e){
return 0;
}
return -val;
}
}
}