私はleetcodeのPythonプログラミングを練習していました。なぜこれらの2つのコードが異なる効率(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
これはとても奇妙です。私はこれらの2つのコードが全く同じように思えると思います。
これらの違いは、パラメータだけです。
なぜこれらのコードが異なる結果をもたらすのか不思議です。
これはPythonコードではありません。あなたは 'def'の外に' return'を持つことはできません。パラメータリストを含む**完全な定義を提供してください。また、コードを複数回実行してみてください...コードが速く実行され、時間制限が50%にすぎないケースがよくあります。 – Bakuriu
@Bakuriu申し訳ありません、私は前にいくつかのコードを忘れています。あなたの思い出してくれてありがとう。私は自分のコードをたくさん試しました。しかし、それは常に私に同じ結果を与える.. –