题目:请实现一个函数,把字符串的每个空格换成“%20”。
思路:
- 将字符串遍历一遍,返回字符串中存在的空格个数。
- 使用两个指针,old指向原字符串末尾,new指向新字符串末尾(即原字符串长度+2*空格数)。
- 使用循环从新旧两个字符串的尾部开始向前遍历一遍,若old指向字符,则将字符复制到新的字符串new_str中,同时old - 1; new - 1
- 若old指向的是空格,则新字符串中按位依次填上 0 - 2 - %,同时 old -1;new - 3
- 循环结束条件: 直到old不再小于new
代码 (python)
def replaceblank(astr):
# 遍历找出原字符串中空格的数量blank. -- step 1
blank = 0
for i in range(len(astr)):
if astr[i] == ' ':
blank += 1
# 构建old与new两个指针 -- step 2
old = len(astr) - 1
new = old + 2*blank
new_str = [None for i in range(new+1)]
while old <= new:
#step 4
if astr[old] == ' ':
new_str[new] = '0'
new_str[new-1] = '2'
new_str[new-2] = '%'
new = new - 3
else:
#step 3
new_str[new] = astr[old]
new = new - 1
old = old - 1
return ''.join(new_str)
注意:
- 循环条件为
old <= new
而不是old < new
网友评论