def findEquals(words, word):
wordCounts = sorted(Counter(word).values())
equals = []
for word in words:
wordsCounts = sorted(Counter(word).values())
if wordCounts == wordsCounts:
equals.append(word)
return equals
私は単語が単語のリストである私のコードの中にこのループを持っています。リストの各単語について、カウンタの文字の頻度を値として格納し、sorted()メソッドを使用してソートします。 sorted()はO(nlog(n))の最悪の時間複雑さを持っていることが分かります。 forループの中でsorted()が使われているので、コード全体の最悪の時間複雑さはO(n^2 log(n))だと言うのは正しいですか?ループ内のPythonソートされたメソッドの時間の複雑さ
あなたのコードは私には少し混乱しています。 'sorted(Counter(word).values())'は文字の 'Counter 'を作成し、周波数によって単調にソートされます。その後、各単語について、文字の頻度が同じかどうかを確認していますか?ソートする必要はありません。 – erip
確かに。 'findEquals'は何をしますか?なぜあなたは 'word'変数をシャドーしていますか? –
私は、文字の頻度が入力単語の文字の頻度に対応する単語のリストの中のすべての単語を返すように求められました。 – Baqdul