LeetCode 7整数反转

LeetCode 7整数反转

  • 题目简述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231-1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

  • 输入:123 输出:321

    输入:120 输出:21

    输入:-123 输出:-321

  • 思路:整数取余循环

    依次从右到左计算每位数字,然后逆序累加到一个整数中,特别的:

    • int型整数逆序后可能会溢出,要用long long记录中间结果
    • 对于负数不需要额外处理,负数取余后得到的还是负数,如-18 % 10 = -8

    题目更关心数字对应的位数长度,一个数一共有logn位,时间复杂度是O(logn)

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

你可能感兴趣的:(LeetCode)