Leetcode专题[字符串]-剑指 Offer 05-替换空格

力扣链接:
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)
}

你可能感兴趣的:(golang)