leetcode 每日一题 7.整数反转

Posted nil_f

tags:

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

1.整除取余

思路:

对原整数循环对10取余和整除,然后进行拼接。这里需要注意的时,在整除时要考虑如果原整数大于最大值或者小于最小值的情况。

例如:

原整数 x = 123 翻转后整数 new_x = 0  余数为 p  

① x != 0  则  p = x%10 = 123%10 = 3,x = x // 10 = 123//10 = 12,new_x=new_x*10+p = 0*10 + 3 = 3

② x != 0  则  p = x%10 = 12%10 = 2,x = x // 10 = 12 // 10 = 1,new_x=new_x*10+p = 3*10 + 2 = 32

③ x != 0  则  p = x%10 = 1%10 = 1,x = x // 10 = 1 // 10 = 0,new_x=new_x*10+p = 32*10 + 1 = 321

④ x == 0 则 返回new_x

代码:

class Solution:
    def reverse(self, x: int) -> int:
        result = 0
        maxsize = 2**31-1
        minsize = -2**31
        while x != 0:
            pop = x % 10
            x //= 10
            if x > maxsize//10 or (x == maxsize//10 and pop > 7):
                return 0
            if x < minsize//10 or (x == minsize//10 and pop < -8):
                return 0
            result = result * 10 + pop
        return result

2.整数转字符串再转整数

思路:

先将整数变成字符串,然后对字符串取反,再把字符串转为整数。这里在对字符串操作时,要考虑负数情况,同时对结果进行最大最小判断。

代码:

class Solution:
    def reverse(self, x: int) -> int:
        str_num = str(x)[::-1]
        if str_num.endswith(\'-\'):
            str_num = \'-\' + str_num[:-1]
        if int(str_num) < -2**31:return 0
        if int(str_num) > 2**31 - 1: return 0
        return int(str_num)

 

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

7.整数反转Java版,每日一题系列(此题来自力扣网)

春季每日一题打卡day1—— 整数反转

每日一道leetcode:7. 整数反转

Java算法 每日一题 编号541:反转字符串 II

Java算法 每日一题 编号541:反转字符串 II

Java算法 每日一题 编号541:反转字符串 II