转为字符串分情况讨论
class Solution {
public int reverse(int x) {
long num = 0;
String numStr = x + "";
int len = numStr.length();
if(x >= 0){
for(int i=len-1;i>=0;i--){
char ch = numStr.charAt(i);
num = num * 10 + ch - '0';
}
if(num > Integer.MAX_VALUE) return 0;
return (int) num;
}else{
for(int i=len-1;i>0;i--){
char ch = numStr.charAt(i);
num = num * 10 + ch - '0';
}
num *= -1;
if(num < Integer.MIN_VALUE) return 0;
return (int)num;
}
// return 0;
}
}
直接一个循环内计算(溢出判断挺有意思的)
class Solution {
public int reverse(int x) {
int ans = 0;
while (x != 0) {
if ((ans * 10) / 10 != ans) {//判断ans*10是否溢出
ans = 0;
break;
}
//当ans*10未溢出时,ans*10的个位是0,故ans*10+x%10也不会溢出
ans = ans * 10 + x % 10;
x = x / 10;
}
return ans;
}
}