LeetCode.9.回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例 1:

输入: 121
输出: true

示例 2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:

你能不将整数转为字符串来解决这个问题吗?

思路1:

将正数转化成字符串,求其回文数字符串,比较两者是否相等即可。

代码1:

class Solution:
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        x=str(x)
        x1=[]
        for i in x[::-1]:
            x1.append(i)
        for i in range(len(x)):
            if x[i]!=x1[i]:
                return False
        return True

分析1:

时间复杂度O(n),空间复杂度O(n)

思路2(进阶):

直接使用除法和取模运算直接构造整数回文数后进行比较。

代码2:

class Solution:
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x<0:
            return False
        x1=0
        y=x
        while x:
            m=x%10
            x1=x1*10+m
            x=x//10
        if x1!=y:
            return False
        return True

提示:

需要有一个变量来保存初始x值

分析2:
时间复杂度O(N),空间复杂度O(1)

猜你喜欢

转载自blog.csdn.net/u013942370/article/details/82821863