LeetCode——9. Palindrome Number
Description
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Examples
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.
Notice
Coud you solve it without converting the integer to a string?
Solutions
1.使用while循环的方式
由于题目要求不能使用字符串的方式,不能产生多余的空间,所以可以使用while循环,类似第七题将一个整数反过来,与原数字进行对比。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0:
return False
result = 0
while (result < x):
result = result * 10 + x %10
if result == x:
return True
elif result == 0:
return False
x /= 10
return x == result
但这里还有一个问题是下面的代码,我觉得是对的,但运行错误,如果能有大神指教出来就好了。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0:
return False
result = 0
while x != 0:
result = result * 10 + x %10
x /= 10
if result == x:
return True
经过Leetcode上网友的帮助,已解决上面的问题,问题在于,最后比较的值x已经不是原来的值了,在while循环中改变了x的值,为此可以在外面设置一个y=x;最后比较result与y的值。