力扣链接:
https://leetcode-cn.com/probl...
解题思路:

  1. 这道题如果新增空间,就比较简单
  2. 如果须要原地替换,那么能够应用两个指针,首先统计有多少个空格,因为每个空格替换后会多进去两个byte,所以依照这个数字进行扩容,而后从原字符串尾部进行遍历,遇到空格替换填入
func replaceSpace(s string) string {    b := []byte(s)    spaceCount := 0    for _, v := range b {        if v == ' ' {            spaceCount++        }    }    tmpSize := make([]byte, spaceCount * 2)  // 每个空格换成%20减少两个大小    b = append(b, tmpSize...)    i := len(s) - 1    j := len(b) - 1    for i >= 0 {        if b[i] != ' ' {            b[j] = b[i]            i--            j--        } else {            b[j] = '0'            b[j-1] = '2'            b[j-2] = '%'            j = j-3            i = i-1        }    }    return string(b)}