我无法理解为什么我的代码的一个版本花费的时间是另一个版本的两倍。他们两个都具有相同的功能,如果传入的数字是回文,则返回True
,否则返回False
。第一个版本平均需要1.5秒才能返回True
或False
,而第二个版本平均需要大约0.75秒。
第一个版本:进行比较:
def isPalindrome(num):
number = str(num)
count = 0
for letter in number:
if letter is number[len(number) - count - 1]:
count += 1
return count == len(number)
第二版:使用else语句:
def isPalindrome(num):
number = str(num)
count = 0
for letter in number:
if letter is number[len(number) - count - 1]:
count += 1
else:
return False
return True
答案 0 :(得分:0)
在回文上,这两个功能是等效的:它们采用相同的n步数。如果回文式尽早中断,则第二个函数将更早返回,而第一个函数将继续增加count
直到字符串的最后一个元素。
示例:
"abcdefgh1234554321hgfedcba" -> both take n steps.
"bcdefgh1234554321hgfedcba" -> 2nd takes 1 step and return, while 1st takes n steps.
答案 1 :(得分:-1)
第一个代码版本始终检查所有数字,即使它知道该数字不能是回文。
第二个代码版本不这样做。