7.Reverse Integer (INT; Overflow)
3265 ワード
Reverse digits of an integer.
Example1: x = 123, return 321 Example2: x = -123, return -321
考え方:オーバーフローに注意.以下の方法では、溢れ出します.
改善されたアプローチ:
Example1: x = 123, return 321 Example2: x = -123, return -321
考え方:オーバーフローに注意.以下の方法では、溢れ出します.
class Solution {
public:
int reverse(int x) {
int ret = 0;
while(x){
ret = ret * 10 + x%10;
x /= 10;
}
return ret;
}
};
改善されたアプローチ:
class Solution {
public:
int reverse(int x) {
if (x == INT_MIN) return 0;
int ret = 0;
int digit;
bool pos = x>=0?true:false;
x = abs(x); // ,
while(x){
digit = x%10;
if (ret > (INT_MAX - digit) / 10) //10*ret+digit > INT_MAX
return 0;
ret = ret * 10 + digit;
x /= 10;
}
if(pos) return ret;
else return (-ret);
}
};