注意:
这道题目不难,但是多处要注意:
1. 0结尾
2. 反转过来是否越界
3. 负数与正数
// 可以利用 StringBuffer 的 reverse()方法的。
public class Solution {
public int reverse(int x) {
if(x == 0 || x >= Integer.MAX_VALUE || x <= Integer.MIN_VALUE) return 0;
boolean negative = false ;
if(x < 0) {
x = Math.abs(x);
negative = true;
}
int t = reverseStr(x);
return negative ? (-1)*t : t;
}
int reverseStr(int x) {
String s = "" + x;
int sum = 0;
int len = s.length();
for(int i = len - 1; i >= 0 ; i--) {
double t = Math.pow(10 , i);
int j = x % 10;
x = x/10;
//注意这里遇0则直接跳过;
if(j == 0) continue;
double tmp = sum + j * t;
if(Integer.MAX_VALUE < tmp) return 0;
sum += j * t;
}
return sum;
}
}