LeetCode 7.Reverse Integer

题意:给你一个整数,输出它的反转形式,保证符号不变,前端不包含空余的0,特别注意当数字反转后如果溢出32位整形,应该输出0。
解题思路:定义一个ans为0,对输入的数逐位取出,将ans乘以10之后加上该数,模拟数学进位。每次操作之前需判断ans的绝对值有没有超过最大值INT_MAX=0x7FFFFFFFF除以10,如果超过了则说明下一步操作后将发生溢出,此时返回0;

class Solution {
public:
    int reverse(int x) {
        int ans = 0;
        while(x != 0)
        {
            if(abs(ans) > INT_MAX / 10) return 0;
            ans = ans * 10 + x % 10;
            x /= 10;
        }
        return ans;
    }
};
    原文作者:alexssssu
    原文地址: https://www.jianshu.com/p/55edce0ae5d1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞