7. 整数反转(数论)

7. 整数反转(数论)

题目传送门

思路:因为该数可能溢出所以再溢出前要对该数与 I N T _ M A X 10 \dfrac{INT\_MAX}{10} I N T _ M I N 10 \dfrac{INT\_MIN}{10} 比较,并且此处不用 特殊考虑个位,因为若刚好为最大值或最小值,原数的首位只能为1或2.不过最好还是对特殊情况考虑到。

AC代码:

class Solution {
public:
    int reverse(int x) {
        int y=0;
        while(x){
            if(y>INT_MAX/10||y<INT_MIN/10) return 0;
            y=y*10+x%10;
            x/=10;
        }
       return y;
    }
};

完整特判:

if(y>INT_MAX/10||(y==INT_MAX/10&&x%10>7)) return 0;
if(y<INT_MIN/10||(y==INT_MIN/10&&x%10<-8)) return 0;
原创文章 201 获赞 165 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45750972/article/details/105954016