题目来源
力扣链接:9. 回文数 - 力扣(LeetCode) (leetcode-cn.com)
题目描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
示例
输入:x = 121 输出:true 输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
解题思路
第一种:直接把数值转换为字符串数组,反串后判断是否相同。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
return str(x) == str(x)[::-1]
第二种:先判断是否为负数,再逐位取数添加如数组,判断列表反转前后是否一致。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0:
return False
l =[]
while x:
l.append(x%10) # 这里从个位数开始保存
x = x/10
if l == l[::-1]:
return True
return False
第三种: 因为回文数是对称的,所以比较左右两边的数即可,到达一半时比较是否相等。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0 or (x % 10 == 0 and x != 0):
return False
temp = 0
while x > temp:
temp = temp * 10 + x % 10
x /= 10
return x == temp or x == (temp / 10)