题目地址:回文数
在使用字符串方法的情况下此题和007较为类似
思路1:自拟思路——字符串反转
这里仍然用到字符串反转的技巧,根据题设,先排除输入的x非正数和小于0的情况,然后对大于0的情况进行字符串反转比较处理
总结:和007类似的思路
用时:256 ms (击败99.97%的用户,是不是因为增加了类型判断的原因?)
def isPalindrome1(x):
if type(x) is not int:
return False
elif x<0:
return False
else:
x_str=str(x)
x_r=x_str[::-1]
if int(x_r)==x:
return True
else:
return False
思路2:网友思路——直接比较字符串反转值
emmmm,我还能说什么呢?
总结:只能是emmm了
用时:256 ms (击败99.97%的用户,看了回答,相似代码用时176ms,可能还跟网速有关)
def isPalindrome2(x):
return str(x) == str(x)[::-1]
#这是最快一个,加了一个if判断
def isPalindrome(x):
if x >= 0 and str(x) == str(x)[::-1]:
a = True
else :
a = False
return a
思路3:自拟思路——不用字符串转换
利用取模和地板除算法,对数据进行个十百千等位数的拆解
总结:这个本来应该是最先想到的方法吧,并不是很省力。
用时:572 ms
def isPalindrome3(x):
#仍然先判断x的数据类型
if (type(x) is not int) or x<0:
return False
else:
#定义m作为反转后的数据
#定义n=x作为处理过程中的桥梁数据
# n%10用于取模(当前数据除以10后的余数),
#然后再对n进行地板除(除10后只保留整数部分),接着n不等于0时循环上述步骤
m=0
n=x
while (n!=0):
m=m*10+n%10
n=n//10
return x==m
网友评论