关于golang:Leetcode专题字符串剑指-Offer-05替换空格

4次阅读

共计 428 个字符,预计需要花费 2 分钟才能阅读完成。

力扣链接:
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)
}
正文完
 0