力扣链接:
https://leetcode-cn.com/probl...
解题思路:
- 这道题如果新增空间,就比较简单
- 如果需要原地替换,那么可以使用两个指针,首先统计有多少个空格,因为每个空格替换后会多出来两个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)
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。