美文网首页
2020-11-05 leetcode 刷题记录 1道

2020-11-05 leetcode 刷题记录 1道

作者: 是黄小胖呀 | 来源:发表于2020-11-06 00:05 被阅读0次

7. 整数反转

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

注意:

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

关键点:利用字符串的反转和溢出的判断条件

代码如下:

class Solution:

    def reverse(self, x: int) -> int:

        def reverse(s):

            k=len(s)

            if k==1:

                return s

            elif k%2==0:

                s1=list(s)

                l=k//2

                for i in range(l):

                    tmp=s1[i]

                    s1[i]=s1[k-1-i]

                    s1[k-1-i]=tmp

            else:

                s1=list(s)

                l=(k-1)//2

                for i in range(l):

                    tmp=s1[i]

                    s1[i]=s1[k-1-i]

                    s1[k-1-i]=tmp

            return s1

        k=len(str(x))

        s=str(x) 

        if s is None:

            return s

        if k==1:

            return x

        elif s[0]=='-':

        #交换字符串

           result=-1*(int(''.join(reverse(s[1:]))))

           if result>(2**31)-1 or result<-1*(2**31):

               result=0

        else:

        #交换字符串

           result=int(''.join(reverse(s[:])))

           if result>(2**31)-1 or result<-1*(2**31):

               result=0

        return result

相关文章

网友评论

      本文标题:2020-11-05 leetcode 刷题记录 1道

      本文链接:https://www.haomeiwen.com/subject/jdezvktx.html