假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
代码如下:
int reverse(int x) {
int temp = x, num = ;
while (x) {
if (num > INT32_MAX / || (num == INT32_MAX / && (x % ) > )) {
return ;
}
if (num < INT32_MIN / || (num == INT32_MIN / && (x % ) < -)) {
return ;
}
num = num * + x % ;
x /= ;
}
return num;
}
代码如下:
bool isPalindrome(int x) {
int temp = x, num = ;
while (x) {
if (x < ) {
return false;
}
if (num > INT32_MAX / || (num == INT32_MAX / && x % > )) {
return false;
}
if (num < INT32_MIN / || (num == INT32_MIN / && x % < -)) {
return false;
}
num = num * + x % ;
x /= ;
}
return temp == num;
}
这两道题都是整数翻转相关,主要代码就两行:
num = num * + x % ;
x /= ;