Reverse Integer

Reverse Integer

描述

给定一个数字, 将其进行反转, 符号部分位置不变

示例:
输入: 123
输出: 321

输入: -123
输出: -321

分析

复杂度 \(O(n)\), 不难的题目, 就怕写成这样

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        res = 0
        if x < 0:
            res = -int(str(x)[len(str(x)):0:-1])
        else:
            res = int(str(x)[::-1])
        if res > pow(2, 31) - 1 or res < - (pow(2, 31) - 1):
            return 0
        return res

题目是可以 ac 的, 但是问题比较多

第一, 不管用什么语言, 都不推荐使用复杂度超过的内部方法, 不允许使用超过算法本身复杂度的内部方法(比如要求 \(O(n)\)复杂度, 使用 sorted 方法)

第二, 算法的目的并不一定是解决问题, 是了考察思路, 这道题来说, 输入是数字, 转换成字符串操作, 不太好

另外, 用 python 做这种题目, 是不需要考虑溢出的, 为了过 ac, 在溢出的时候做下范围判断就行

做数字翻转, 一边除以10, 结果乘权相加即可, 比较简单

答案

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        u = 1
        if x < 0:
            u = -1
            x = -x
        s = 0
        while x != 0:
            s = s * 10 + x % 10
            x = x / 10
        if s > 2 ** 31 - 1:
            return 0
        return u * s
打赏
微信扫一扫支付
微信logo微信扫一扫, 打赏作者吧~