判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
使用字符串超级简单,一句代码,我这里实现了两种方法,一种字符串倒转,一种通过取余整除的方法
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
# 方法一:
# return str(x) == str(x)[::-1]
# 方法二:
# 定义一个变量存储x的值
prev_x = x
# 定义一个变量存储x倒序后的值
inve_x = 0
# 当prev_x大于0的时候循环,这里筛选负数
while prev_x > 0:
# inve_x*10加上prev_x和10取余的数
inve_x = inve_x * 10 + (prev_x % 10)
# prev_x整除10
prev_x = prev_x // 10
return inve_x == x
if __name__ == '__main__':
s = Solution()
palindrome_bool = s.isPalindrome(-121)
print(palindrome_bool)