美文网首页
2019-04-02

2019-04-02

作者: 张炜斌 | 来源:发表于2019-04-02 14:07 被阅读0次

...
class Solution
{
public:
int reverse(int x)
{
int int_max=2^31-1;
int int_min=-2^31;
int m,n=0;
while(x)
{
m=x%10;
if (n > INT_MAX/10 || (n == INT_MAX / 10 && m > 7)) return 0;
if (n < INT_MIN/10 || (n == INT_MIN / 10 && m < -8)) return 0;
n=10*n+m;
x=x/10;
}
return n;
}
};

题解分析:
(1)模型抽象:本题是将一个整型的数逆序输出,但要求不能定义一个数组,需要顶定义一个整形变量将逆序的结果存储起来,可用的方法技巧是:n=10*n+m
(2)但是如果末尾出现是7时,逆序过来会出现溢出,这时会发生错误的结果,无法存储这一个数据,所以需要每一位每一位的判断,需要如下的方法:
if (n > INT_MAX/10 || (n == INT_MAX / 10 && m > 7)) return 0;
如果输入的整数是一个正数,在每一次整除的时候都要比较最大值/10得出的结果,如果大了停止循环,返回结果0,或者是末尾是大于7的情况,返回结果0
if (n < INT_MIN/10 || (n == INT_MIN / 10 && m < -8)) return 0;
如果输入的整数是一个负数,在每一次整除的时候都要比较最小值/10得出的结果,如果小了停止循环,返回结果0,或者是末尾是大于8的情况,返回结果0
...

相关文章

网友评论

      本文标题:2019-04-02

      本文链接:https://www.haomeiwen.com/subject/qjfgbqtx.html