翻转数字

数字反转​:给定整数 x,返回其反转后的结果(如 123 → 321,注意处理负数及溢出)

    int main()
    {
        const int num = -2147483641; //(-2147483647 - 1)
        printf("%d\n", num);
        long long temp = num;

        vector<unsigned int> vec;
        if (0 == temp)
            vec.push_back(0);

        bool sign = false;
        if (temp < 0)
        {
            temp = -temp;
            sign = true;
        }

        while (temp != 0)
        {
            vec.push_back(temp % 10);
            temp = temp / 10;
        }

        //[3, 2, 1] = > 321
        temp = 0;
        for (int i = 0; i < vec.size(); i++)
        {
            temp = temp * 10 + vec[i];
            if (sign && -temp < INT_MIN)
            {
                printf("%d\n", 0);
                return 0;
            }
            if (!sign && temp > INT_MAX)
            {
                printf("%d\n", 0);
                return 0;
            }
        }

        if (sign)
        {
            temp = -temp;
        }

        const int result = static_cast<int>(temp);
        printf("%d\n", result);

        return 0;
    }

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务