我在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對不起,我錯過了一些代碼。感謝您的提醒。我已經嘗試了很多次我的代碼。但它總是給我同樣的結果.. –