- 题目:将一个int类型的整数反转
- 难度:Easy
- 思路:通过取余,然后进行n次左移,主要需要考虑反转之后会导致溢出
- 代码:
方法一:直接使用long型来进行计算,这样就不用考虑和Integer.MAX_VALUE/Integer.MIN_VALUe进行比较
public class Solution {
public int reverse(int x) {
if(x ==0){
return 0;
}
long result = 0;
long value = (long)x;
while(x != 0){
result = result *10 + x%10;
x = x/10;
}
if(result > Integer.MAX_VALUE || result < Integer.MIN_VALUE){
return 0;
}
return (int)result;
}
}
方法二:利用一个变量来存进行此次反转之后的结果,判断这个结果“取反”之后是否与上一次的结果相等,不相等则说明已经溢出了
public class Solution {
public int reverse(int x) {
if(x ==0){
return 0;
}
int result = 0;
while(x != 0){
int tail = x%10;
int newResult = result * 10 + tail;
if((newResult-tail)/10 != result){
return 0;
}
x = x/10;
result = newResult;
}
return result;
}
}