The first solution flashed into my mind takes O(n), and it's similar to the one on the answer page.
import string
def replace_space(str):
# Count the number of spaces
space_count = 0
for i in range(0, len(str)):
if str[i] == ' ':
space_count = space_count + 1
# Allocate a new string
new_str = [' ' for i in range(0, len(str) + 2*space_count)]
#Copy the original string into new string,
# while replacing spaces with "%20"
j = 0
for i in range(0, len(str)):
if str[i] == ' ':
new_str[j] = '%'
new_str[j+1] = '2'
new_str[j+2] = '0'
j = j + 3
else:
new_str[j] = str[i]
j = j + 1
return string.join(new_str, '')
One thing to note is the string.join() function, which takes the connector as the second parameter and the default connector is a space.