给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
我的解法为:
class Solution {
public int reverse(int x) {
if(x/10 == 0)return x;
int y = Math.abs(x), p;
int q = x/y;
double m, n, t;
String str = "";
t = Math.pow(2, 31);
m = -t;
n = t - 1;
if(x <= m || x >= n)return 0;
while(y != 0){
p = y % 10;
y = y / 10;
str += p;
}
long l = Long.parseLong(str);
if(l >= m && l <= n)return q*Integer.parseInt(str);
else return 0;
}
}
不过在讨论板上看到更简单的解法,妈呀!什么时候才能和他们一样牛!
public int reverse(int x) {
long n = 0;
while(x != 0) {
n = n*10 + x%10;
x = x/10;
}
return (int)n==n? (int)n:0;
}
还有此解:
int reverse(int x)
{
long n = 0;
while (x)
{
n = n * 10 + x % 10;
x /= 10;
}
return n > INT_MAX || n < INT_MIN ? 0 : n;
}