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,这真的不算耍赖嘛)
本文提供三种不同的解决方案实现LeetCode题目7.Reverse Integer,通过不同的技巧处理整数反转过程中的溢出问题,包括检查溢出前的结果、结果还原判断及使用int64_t类型。
1513

被折叠的 条评论
为什么被折叠?



