下面的String操作是否在python中使用了额外的空间?

Ind*_*ior 0 python algorithm space-complexity

如果我使用以下代码从字符串S中删除空格,是否会将其视为使用额外的空格/内存?给出'S'字符串'l'长度.

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

编辑:这只是一个示例代码.请不要评论它的复杂性和/或删除空格的正确方法:).这里的上下文是,在解决算法设计问题时,涉及一些字符串操作,使用额外空间的限制.我想知道这样的操作是否使用额外的内存/空间.

Yev*_*ych 8

每次执行类似操作时a[b:c],Python都会创建一个新对象.所以是的,你正在使用额外的空间.我建议使用这样的replace()方法:

S.replace(" ", "")
Run Code Online (Sandbox Code Playgroud)

它会一次删除所有空格.

顺便说一句,你不会增加i你的代码并:while语句中丢失.