【算法题】 反转整数

题目:

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

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

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

思想:

    这道题很简单,就是先将数字变为字符串,然后按照字符串反转就行了,首先要判断是否为负数,然后还要判断反转后数字前面是否有0,有0就要去掉,最后还要判断是否越界。

代码:从这道题开始用python实现

def reverse(x):
    if(isinstance(x,int) == False):
        return
    pnum = str(x)
    if( x<10 and x >=0):
        return int(x)
    if(pnum[0] == '-'):#有符号
        l = list(pnum[1:])
        rnum ="-"
        l.reverse()
        for val in enumerate(l):
            if val[1] == "0":
                l[val[0]] = "*"
            else:
                break
        l1 = []
        for c in l:
            if c != "*":
                l1.append(c)
        rnum+="".join(l1)
        if (int(rnum) < int("-2147483648")):
            rnum = "0"
    else:
        rnum = pnum[::-1]
        l = list(rnum)
        for val in enumerate(l):
            if val[1] == "0":
                l[val[0]] = "*"
            else:
                break
        l1 = []
        for c in l:
            if c!="*":
                l1.append(c)
        rnum = "".join(l1)
        if(int(rnum) > int("2147483647")):
            print("rnum")
            rnum="0"
    return int(rnum)
if __name__ == "__main__":
    print(reverse(-123))

猜你喜欢

转载自blog.csdn.net/qq_23418043/article/details/80672474
今日推荐