[题目连接](https://leetcode-cn.com/problems/reverse-integer/)
class Solution {
public:
int reverse(int x) {
int MAX = 2147483647;
int RET_MAX = MAX/10;
if(x == 0 || x == -2147483648) return 0;
int sign = (x > 0) ? 1 : -1;
int ret = 0;
int num = abs(x);
while(num % 10 == 0){
num /= 10;
}
while(num != 0){
int add = num % 10;
if((ret > RET_MAX) ||
(ret == RET_MAX && add > 7 && sign == 1) ||
(ret == RET_MAX && add > 8 && sign == -1)
){
return 0;
}
ret = ret * 10 + add;
num /= 10;
}
return ret*sign;
}
};
测试了一下,代码没什么问题,调整什么呢?
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
class Solution
{
public:
int reverse(int x)
{
long result(0);
if (x == INT_MIN)
{
return 0;
}
if (x < 0)
{
return -reverse(-x);
}
int digit(0);
while (x > 0)
{
digit = x % 10;
x /= 10;
result = result * 10 + digit;
}
if (result > INT_MAX)
{
return 0;
}
return int(result);
}
};
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
你可以看看题解区的大佬是怎么写的,就提交记录那个耗时分布图那里,我用的是java,没有在前面定义很多变量,直接用现成的值来 “/”
class Solution {
public int reverse(int x) {
int res = 0;
while(x != 0) {
int temp = x % 10;
if(res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && temp > 7) ||
res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && temp < -8)){
return 0;
}
res = res * 10 + temp;
x /= 10;
}
return res;
}
}
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y