[leetcode题解]7. Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123 Output: 321

Example 2:

Input: -123 Output: -321

Example 3:

Input: 120 Output: 21

Note:

Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123 输出: 321

 示例 2:

输入: -123 输出: -321

示例 3:

输入: 120 输出: 21

注意:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。

题目意思就是将整数翻转,只要考虑正负和32位范围即可,为了方便考虑整数范围,使用64位整数来进行存储结果,然后将结果与INT_MAX和INT_MIN宏进行比较是否超出范围。

代码如下:

int reverse(int x) {
    bool flag = false;
    long long res = 0;
    
    if (x < 0) {
        flag = true;
        x = -x;
    }
    
    while (x != 0) {
        int digit = x % 10;
        res *= 10;
        res += digit;
        x /= 10;
    }
    
    if (flag)
        res *= -1;
    
    if (res < INT_MIN || res > INT_MAX)
        res = 0;
    
    return res;
}

本文遵从CC3.0协议转载请注明:转自凌风技术站

本文标题:[leetcode题解]7. Reverse Integer

本文链接地址:http://www.iaccepted.net/algorithm/leetcode/182.html

相关文章