【Leetcode】9. 回文数(Palindrome Number)

No9. 回文数

题目

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

示例 1

  • 输入: 121
  • 输出: true

示例 2

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

示例 3

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

解题代码(Python3)

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        s = str(x)
        def isP(left,right):
            if right - left < 1:
                return True
            return s[left] == s[right] and isP(left+1,right-1)
        return isP(0,len(s)-1)

思路:

若x小于0,很显然不是回文数;若x大于等0,新建一个isP方法,同时对左右端点和它们之间的子串进行递归判断,注意递归终止条件是left等于right。

复杂度分析:

  • 时间复杂度O(n/2) = O(n)
  • 空间复杂度O(1)

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Xiao_Spring/article/details/113666850