2016-11-27 1 views
0

次のコードを使用して文字列Sから空白を削除した場合、余分な空白/メモリを使用すると見なされますか?与えられた 'S'文字列の 'l'長さ。以下のような文字列操作は、Pythonで余分なスペースを使用しますか?

int n = l 
while i < n 
    if S[i] == " ": 
     S = S[0:i] + S[i+1:] 
    n = len(S) 
print "the new string ", S 

編集:これは単なるサンプルコードです。その複雑さやスペースを削除する正しい方法についてコメントしないでください:)。ここでのコンテキストは、文字列演算を含むアルゴリズム設計の問題を解決する一方、余分なスペースを使用するという制限がありました。そして、私はこのような操作が余分なメモリ/スペースを使用しているかどうかを知りたかったのです。

+0

「余分なスペースを使用する」とはどういう意味ですか? – Rojan

+1

文字列のスペースを削除するには、このようにする必要がありますか? "space-complexity"タグはスペース文字を扱うアルゴリズムではありません... –

+1

まあ、O(N^2)時間がかかっています。それはO(N)のスペースを取るが、新しい文字列を作るものであれば、私はそれを「余分」と呼ぶことはないだろう。 –

答えて

7

a[b:c]のような操作を行うたびに、Pythonは新しいオブジェクトを作成します。そう、はい、余分なスペースを使用しています。私はそうのようなreplace()方法を使用することをお勧めします:

S.replace(" ", "") 

それは、一度にすべてのスペースを削除します。

あなたのコードではiを増やさずに文に:がありません。

+0

本当に有益な情報ありがとうございます。欠落している「i」の増加は、これが大きなコードからコピーされた単なるスニペットであり、それはあまりにも連続したコード行ではないからです。 – IndusWarrior

関連する問題