第二十五天了,尽管总是有很多意外,还能继续坚持着
相信“傻傻”的坚持,每天看来不写一段“鸡汤”,自己都无法说服自己坚持了吧
今天这道回文数的题目
https://leetcode-cn.com/problems/palindrome-number/description/
思路特别直接,先把数字转成字符串,然后两个指针分别指向头和尾,然后依次比较,如果不相等就跳出,返回false,如果相等,就把两个指针向中间靠近一下
class Solution:
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
strNum = str(x)
i = 0
j = len(strNum)-1
ret = True
while i<j:
if strNum[i] == strNum[j]:
i+=1
j-=1
else:
ret = False
break
return ret
那么接着就要看,是否有办法不转成字符串呢?
其实方法也很直接,就是看是否有办法把当前数字逆序了,然后要看下逆序后的数字和之前是否相等即可
class Solution:
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
y = x
res = 0
while x>0:
res = res*10 + x%10
x = x//10
if res == y:
return True
else:
return False
那么接着就有一个问题是,逆序的过程中,这个数字是否会越界呢?当然好像在Python中不太可能,但在其他强类型的语言呢?也可能是需要用一个更大类型了吧?
网友评论