我很难理解为什么我的代码的一个版本花费的时间是另一个版本的两倍。这两个函数使用相同的函数,如果传入的数字是回文,则返回True
,否则返回False
。第一个版本返回True
或False
平均需要1.5秒,而第二个版本平均需要大约.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)
第2版:使用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
发布于 2018-09-06 03:14:20
在回文中,这两个函数是等价的:它们采用相同的n个步骤。如果回文较早中断,则第二个函数返回的时间较早,而第一个函数不断递增count
,直到字符串的最后一个元素。
示例:
"abcdefgh1234554321hgfedcba" -> both take n steps.
"bcdefgh1234554321hgfedcba" -> 2nd takes 1 step and return, while 1st takes n steps.
发布于 2018-09-02 11:26:10
第一个代码版本总是检查所有的数字,即使它知道数字不能是回文。
第二个代码版本不能做到这一点。
https://stackoverflow.com/questions/52133437
复制相似问题