LeetCode - 0007 - Reverse Integer

题目概要

将一个32-bit的整数按照反转,并返回一个新的数字;如果反转过程中发生溢出,则返回0。

题目链接

Reverse Integer

题目解析

  1. 取出符号位
  2. 反转数字到字符串中
  3. 将字符串转换为64-bit位整数
  4. 判断是否溢出,溢出则返回0,否则返回原数字

复杂度分析

时间复杂度:O(n)
空间复杂度:O(n)
n为输入的数字位数

代码

class Solution {
public:
    int reverse(int x) {
        int flag = x < 0 ? -1 : 1; // 去除符号位
        // 反转并存储到字符串中
        int y = abs(x);
        string s;
        int res = 0;
        while (y) {
            s.push_back('0' + y%10);
            y /= 10;
        }
        long long tmp = flag*atoll(s.c_str());
        // 判断是否溢出
        if(tmp > INT_MAX || tmp < INT_MIN) return 0;
        else return (int)tmp;
    }
};

广告区域

本人和小伙伴们承接各种软件项目,有需求的可以联系我们。
QQ: 2992073083

你可能感兴趣的:(LeetCode - 0007 - Reverse Integer)