leetcode_整数翻转_python3

问题出处:回文数

题目描述

判断一个整数是否是回文数,当一个整数从前向后读与从后向前读相同时,它就是回文数。

示例1:

Input: 121
Output: true

示例2:

Input: -121
Output: false
说明: 从左到右读成 -121,从右到左变为121-。因此它不是回文数。

示例3:

Input: 10
Output: false
说明: 从右到左为 01 。因此它不是回文数。

注意

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

解题思路

  1. 整数取10的余数与result*10相加,每次result前进一位,将余数作为各位相加,然后x/10,直至x等于0
class Solution:
    def reverse(self, x):
        return self.get_result(x) if x > 0 else -self.get_result(abs(x))

    def get_result(self, x):
        result = 0
        while x != 0:
            result = result * 10 + x % 10
            x = int(x / 10)
        return result if pow(-2, 31) < result < pow(2, 31) - 1 else 0
  1. 整数先转字符串,然后字符串翻转,再转回整数
class Solution:
    def reverse(self, x):
        str_x = str(x)
        if str_x[0] == "-":
            x = str_x[1:][::-1]
            x = -int(x)
        else:
            x = int(str_x[::-1])
        return x if -2147483648  < x < 2147483647 else 0

猜你喜欢

转载自blog.csdn.net/BurningSilence/article/details/107840206