7. Reverse Integer:https://leetcode.com/problems/reverse-integer/description/
【runtime = 12ms】
hint:新结果赋值前检查是否overflow,原理是“result*10+x%10>max”,但注意不等式两边都不能overflow
class Solution {
public:
int reverse(int x) {
int result = 0;
while(x!=0)
{
int tmp = x%10;
if(result>0 && result > (INT_MAX - tmp)/10)
{
return 0;
}
if(result<0 && result< (INT_MIN-tmp)/10)
{
return 0;
}
result = result*10+tmp;
x/=10;
}
return result;
}
};
【runtime = 8ms】
hint:赋值后,还原,值不同,overflow
while (x != 0) {
temp = result*10 + x % 10;
if (temp % 10 != x % 10) {
// overflow
return 0;
} else {
result = temp;
}
x = x / 10;
}
【runtime = 4ms】
hint:int64_t,(ORZ,这真的不算耍赖嘛)