力扣刷题 day02:09-01

2.回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如,121 是回文,而 123 不是。力扣刷题 day02:09-01_第1张图片

方法一:直接利用python的字符串特性,直接反转,比较是否相等 

#方法一:直接利用python自带的字符串性质求解
def isPalindrome(x):
    x=str(x)
    nx=x[::-1]
    if x==nx:
        return True
    else:
        return False               #法一可以简化成:str(x)==str(x)[::-1]
print(isPalindrome(121))

方法二:双指针法 ,从头到尾比较(参考题解)

关键是两个指针,一个从最左边开始,一个从末尾开始,要先转换成字符串再比较 

#方法二:双指针法,即头尾逐个比较
def isPalindrome(x):
    #先判断个位是否有0,或者负数
    if x<0 or (x!=0 and x%10==0):
        return False
    s=str(x)
    left=0
    right = len(s)-1
    while left < right:
        if s[left]==s[right]:
            left+=1
            right-=1
        else:
            return False
    return True

方法三:求出对应的数字 (参考题解)

先进行判断,除去一些不可能的数,然后求出反转后的数字

#方法三:直接转换成对应的数
def isPalindrome(x):
    if x<0 or (x!=0 and x%10==0):
        return False
    rx=0
    tem=x  #保存x的值
    while x:
        rx=rx*10+x%10   #拿到最末位,然后上一位,以此类推,并且求出反转后的数
        x=x//10         
    if tem==rx:
        return True
print(isPalindrome(13331))

你可能感兴趣的:(力扣刷题,leetcode,算法,职场和发展)