难度: Easy
原题连接
内容描述
判断一个整数是否是回文数。【回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数】
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读为 -121,从右向左读为 121-,因此它不是一个回文数
示例 3:
输入: 10
输出: false
解释: 从右向左读为01,因此它不是一个回文数
思路1
- 排除小于0的数
- 通过字符串进行反转,对比数字是否相等就行
class Solution:
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0:
return False
elif x != int(str(x)[::-1]):
return False
else:
return True
if __name__ == "__main__":
target = 12421
so = Solution()
status = so.isPalindrome(target)
print("结果: ", status)
思路2
- 排除小于0的数
- 数字通过 % 10 求余数进行反转,进而得到最终反转的结果
- 对比反转的结果是最初的结果是否相等
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0:
return False
rev, y = 0, x
while x > 0:
rev = rev * 10 + x % 10
print("余数: %s - 余数反转结果: %s" % (rev, x % 10))
x = int(x/10)
return y == rev
if __name__ == "__main__":
target = 12321
so = Solution()
n = so.isPalindrome(target)
print("结果: ", n)
"""
余数: 1 - 余数反转结果: 1
余数: 12 - 余数反转结果: 2
余数: 123 - 余数反转结果: 3
余数: 1232 - 余数反转结果: 2
余数: 12321 - 余数反转结果: 1
结果: True
"""