数据结构和算法分析算法提高之LeetCode刷题

字符串-替换空格

2020-03-09  本文已影响0人  小八是怪兽

题目:请实现一个函数,把字符串的每个空格换成“%20”。
思路:

  1. 将字符串遍历一遍,返回字符串中存在的空格个数。
  2. 使用两个指针,old指向原字符串末尾,new指向新字符串末尾(即原字符串长度+2*空格数)。
  3. 使用循环从新旧两个字符串的尾部开始向前遍历一遍,若old指向字符,则将字符复制到新的字符串new_str中,同时old - 1; new - 1
  4. 若old指向的是空格,则新字符串中按位依次填上 0 - 2 - %,同时 old -1;new - 3
  5. 循环结束条件: 直到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)

注意:

上一篇下一篇

猜你喜欢

热点阅读