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

【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) }

    推荐阅读