【Leetcode专题[字符串]-剑指 Offer 05-替换空格】力扣链接:
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)
}
推荐阅读
- Leetcode专题[字符串]-151-翻转字符串里的单词
- Leetcode专题[字符串]-541-反转字符串II
- Leetcode专题[数组]-40-组合总和II
- Golang开发常见的57个错误
- 【golang】leetcode中级-字母异位词分组&无重复字符的最长子串
- 彻底理解Golang Map
- kratos线上开源年会它来啦~
- 深入浅出 Golang 资源嵌入方案(go-bindata篇)
- 深入浅出 Golang 资源嵌入方案(前篇)