LeetCode 9. Palindrome Number [回文数] Python3
Description
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1:
Input: 121
Output: true
Example 2:
Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Follow up:
Coud you solve it without converting the integer to a string?
问题分析
本题是一道简单题,意思是给定一个整数,判断这个数是不是回文数。
这道题说实话真的是非常基础,非常简单了,我最开始想到的方法是把int转换成string,然后反转过来,判断二者是否相等。
在测试样例3的时候,发现题目最后留了一个思考题,说能不能不把int转换成string解决这个问题,这也可以说明转换成string来做是最容易想到、最简单的方法,于是我又实现了整数的反转,进而比较是否相等。
代码实现
转成string来做
class Solution:
def isPalindrome(self, x: int) -> bool:
x = str(x)
x_reverse = x[::-1]
return x == x_reverse
不转成string来做
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
temp = x
x_reverse = 0
while temp != 0:
temp2 = temp % 10
temp = temp // 10
x_reverse = x_reverse * 10 + temp2
return x == x_reverse
运行结果
从图中可以看,转换成string,使用Python封装的方法实现字符串的反转比自己实现的整数的反转(因为负数一定不是回文数)要高效好多。
ok!大功告成了,如果你有其他的方法或者问题,欢迎在评论区交流。