Pregunta: Implemente una función para reemplazar el espacio en una cadena con "% 20". Por ejemplo, cuando la cadena es We Are Happy, la cadena después del reemplazo es We% 20Are% 20Happy.
La complejidad del tiempo es O (n):
class solution(object):
def replace_space(self, string):
num_space = 0
for x in string:
if x == ' ':
num_space += 1
new_lenth = len(string) + 2 * num_space
index_orange = len(string) - 1
index_new = new_lenth - 1
new_string = [None for x in range(new_lenth)]
while index_orange >= 0 :
if string[index_orange] == ' ':
new_string[index_new] = '0'
index_new -= 1
new_string[index_new] = '2'
index_new -= 1
new_string[index_new] = '%'
index_new -= 1
else:
new_string[index_new] = string[index_orange]
index_new -= 1
index_orange -= 1
return ''.join(new_string)
# Aquí usamos la idea de usar el espacio por tiempo para abrir un espacio de almacenamiento, y el espacio de almacenamiento se reemplaza por la lista de '% 20'. Tenga en cuenta que la cadena original es una cadena, y la nueva cadena se convierte primero en una cadena usando una lista
La complejidad del tiempo es O (n2):
Método uno:
solución de clase (objeto):
def replace_space (self, string):
return '% 20'.join (string.split (' '))
# utiliza inteligentemente el método en Python que puede dividir directamente cadenas y unir
Método dos (otra versión mejorada, la lógica del código no cambia y es más intuitiva):
def replace_space(string):
count = 0
for x in string:
if x==' ':
count+=3
else:
count +=1
p1 ,p2= len(string)-1,count-1
newString = [None for x in range(count)]
while p1>=0 and p2>=0:
if string[p1]==' ':
newString[p2] = '0'
newString[p2-1] = '2'
newString[p2-2] = '%'
p2-=3
p1-=1
else:
newString[p2]=string[p1]
p1-=1
p2-=1
return ''.join(newString)
a= 'We are happy.'
print(replace_space(a))