我在leetcode上练习Python编程。为什么这两个几乎相同的代码有不同的高效(Python)?
所以这就是问题所在: https://leetcode.com/problems/reverse-vowels-of-a-string/
这就是我的回答:
def reverseVowels(s):
result = list(s)
v_str = 'aeiouAEIOU'
v_list = [item for item in s if item in v_str]
v_list.reverse()
v_index = 0
for i, item in enumerate(s):
if item in v_list:
result[i] = v_list[v_index]
v_index+=1
return ''.join(result)
结果:Time Limit Exceeded
而且我发现在讨论一个非常类似的答案:
def reverseVowels(s):
lst = list(s)
vowels_str = "aeiouAEIOU"
vowels_list = [item for item in lst if item in vowels_str]
vowels_list.reverse()
vowels_index = 0
for index, item in enumerate(lst):
if item in vowels_str:
lst[index] = vowels_list[vowels_index]
vowels_index += 1
return ''.join(lst)
结果:Accepted
这太奇怪了。我认为这两个代码看起来完全一样。
它们的区别只不过是参数而已。
我很好奇为什么这些代码导致不同的结果。
这不是python代码。你不能在'def'之外有'return'。请提供**完整**定义,包括参数列表。另外:尝试多次运行代码......代码运行速度通常很快,只有50%的时间通过了时间限制。 – Bakuriu
@Bakuriu对不起,我错过了一些代码。感谢您的提醒。我已经尝试了很多次我的代码。但它总是给我同样的结果.. –