2016-11-27 7 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 

Edit: Это просто пример кода. Пожалуйста, не комментируйте его сложность и/или правильный способ удаления пробелов :). Контекст здесь заключался в том, что при решении вопроса проектирования алгоритма, включающего некоторую операцию строки, существовало ограничение использования дополнительного пространства. И я хотел знать, что такая операция использует дополнительную память/пространство или нет.

+0

Что вы подразумеваете под «использованием дополнительного пространства»? – Rojan

+1

вам _really_ нужно сделать так, чтобы удалить пробелы из вашей строки? и тег «space-complex» не относится к алгоритмам, обрабатывающим символы пространства ... –

+1

Ну, это занимает время O (N^2), которое отстойно. Это занимает O (N) пространство, но так будет и все, что создает новую строку, поэтому я бы не назвал это «лишним». –

ответ

7

Каждый раз, когда вы делаете что-то вроде a[b:c], Python создает новый объект. Так что да, вы используете дополнительное пространство. Я хотел бы предложить использовать replace() метод следующим образом:

S.replace(" ", "") 

Это удалит все пробелы в один присест.

И кстати, вы не увеличиваете i в своем коде, а : отсутствует в заявлении while.

+0

Спасибо за информацию, очень полезно. Недопустимый приращение «i» заключается в том, что это всего лишь фрагмент, скопированный из более крупного кода, что слишком не сплошные строки кода. – IndusWarrior

 Смежные вопросы

  • Нет связанных вопросов^_^