1. 题目描述
2. 示例
3. 提示
-(2^31) <= x <=( 2^31)-1
4. Solution
- 思路1:利用 char[] 数组存储整数,然后根据题目条件输出0 或 对应的整数。(该方法用时、空间都较大)代码如下:
class Solution {
public int reverse(int x) {
// 1.特殊情况
if(x == 0){
return 0;
}
// 2.一般情况
String result = "";
char[] str = (""+x).toCharArray();
if(x > 0){
for (int i = str.length-1; i >= 0; i--) {
result += str[i];
}
if(Double.parseDouble(result) > (Math.pow(2,31)-1)){
return 0;
}
}else{
result += "-";
for (int i = str.length-1; i > 0; i--) {
result += str[i];
}
if(Double.parseDouble(result) < -(Math.pow(2,31))){
return 0;
}
}
return Integer.parseInt(result);
}
}
- 思路2:利用取余等方法计算反转后的数字,避免超出范围数字不准确,特用double类型存储反转后结果,再根据题目条件输出 0 或 对应的整数。(该方法用时、空间相比上面较小,但整体还不够优化)代码如下:
class Solution {
public int reverse(int x) {
int length = ("" + x).length();
double sum = 0,factor;
if(x == 0){
return 0;
}else if(x > 0){
factor = Math.pow(10,length-1);
}else{
factor = Math.pow(10,length-2);
}
while(x != 0){
int num = x % 10;
sum += num * factor;
factor /= 10;
x /= 10;
}
if(sum < -Math.pow(2,31) || sum > (Math.pow(2,31)-1)){
return 0;
}
return (int)sum;
}
}
5. 题目来源
力扣