leetcode算法-简单7.整数反转

Posted xxx1206

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode算法-简单7.整数反转相关的知识,希望对你有一定的参考价值。

题目描述

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321


示例 2:

输入: -123
输出: -321


示例 3:

输入: 120
输出: 21
注意:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer

解答

  • 解法:字符串切片和字符转反转

  将传入的整数转为字符串类型,将字符串反转,再将反转后的字符串转为int型

 

  需要注意的是:

  1. 如果x是负数,如-123,那么经过反转后的字符串为“321-”,此时再将字符串转为int型会变成321-,报错。

  为了避免上述错误,增加一个特判条件,如果x<0,则将反转后的字符串最后一位"-"号去掉后,再转化为int型,由于是负数,还需要乘-1

2.  题目要求的不是x的范围,而是反转后的整数范围是 [−231,  231 − 1]

def reverse(x):
    #如果x∈[-9,9],直接返回x
    if x <10 and x >-1*10: return x

    #特判
    if x < 0 :
        a = str(x) #将int整数转化为字符串
        b = a[::-1] #将字符串反转
        c = b[:-1] #去掉字符串末尾的负号
        if int(c) > 2**31: 
            return 0
        else:
            return int(c)*-1

    a = str(x) #整数转为string
    b = a[::-1] #将字符串反转
    if int(b) < 2**31-1:
        return int(b)
    else:
        return 0

  执行用时:40ms

以上是关于leetcode算法-简单7.整数反转的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 7. 整数反转-简单

7. 整数反转(leetcode力扣算法 - java / rust)

7. 整数反转(leetcode力扣算法 - java / rust)

每日算法/刷穿 LeetCode7. 整数反转(简单)

Python版[leetcode]7. 整数反转(难度简单)

Leetcode 7.反转整数 By Python