Da un entero de 32 bits, lo que necesita este número entero en cada invertida.
Ejemplo 1:
Entrada: 123
de salida: 321
Ejemplo 2:
Entrada: -123
salida: -321
Ejemplo 3:
Entrada: 120
de salida: 21
Nota:
Supongamos que tenemos un entorno puede almacenar el entero de 32 bits, entonces el rango de valores de [-231 231 a -1]. Por favor De acuerdo con esta hipótesis, si desbordamiento de entero después de revertir devuelve 0.
1, la cadena de voltear
las x en una cadena, la cadena a número entero invertida, y luego vuelve.
class Solution {
public:
int reverse(int x) {
if (x == INT_MIN) {
return 0;
}
if (x < 0) {
return -reverse(-x);
}
long res = 0;
string str = std::to_string(x);
string res_str;
for (int i = str.size() - 1; i >= 0; --i) {
res_str.push_back(str[i]);
}
res = std::atoi(res_str.c_str());
if (res > INT_MAX) {
return 0;
}
return res;
}
};
2, los métodos matemáticos
toman una posición, y luego a la res * 10 + bits.
class Solution {
public:
int reverse(int x) {
if (x == INT_MIN) {
return 0;
}
if (x < 0) {
return -reverse(-x);
}
long res = 0;
while (x > 0) {
int e = x % 10;
x /= 10;
res = res * 10 + e;
}
if (res > INT_MAX) {
return 0;
}
return res;
}
};
// 下面是评论中的方法
int reverse(int x)
{
int max = 0x7fffffff, min = 0x80000000;//int的最大值最小值
long rs = 0;//用long类型判断溢出
for(;x;rs = rs*10+x%10,x/=10);//逆序,正负通吃,不用单独考虑负值
return rs>max||rs<min?0:rs;//超了最大值低于最小值就返回0
}