我的代码在 hacker rank 编译器窗口中针对某个问题的15个测试输入中的11个产生了令人满意的结果。但是,当我对代码进行细微更改时,所有测试输入均按OK运行。
这是我先前显示错误的代码片段(由于超时而终止)。
for ind, letter in enumerate(string):
if letter in vowels:
kevin += len(string[ind:])
else:
stuart += len(string[ind:])
当我如下更改上面的代码时,所有输入均成功运行。
for ind, letter in enumerate(string):
if letter in vowels:
kevin += len(string) - ind
else:
stuart += len(string) - ind
这两个代码不相等吗?
答案 0 :(得分:2)
除了两个方面,这些代码段是完全等效的:
string
的多个子集创建。__len__
和__iter__
的任何方法。在您添加了错误(说这是超时错误)后,我倾向于问题1(即字符串创建)。
如果要创建一个很长的字符串的子集,则对每次迭代执行以下操作:
calloc()
)对于长字符串,整个序列可能是繁重的操作,尤其是对于每次迭代而言。
第二个算法做到这一点: