请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
新建一个[]byte res,用来存储替换之后的字符集,最终再将其转换成string
统计s中空格的个数n,将s扩容2 * n,再根据原始长度逆序遍历s将其修改
func replaceSpace(s string) string {
res := make([]byte, 0)
for i := range s {
if s[i] == ' ' {
res = append(res, '%', '2', '0')
} else {
res = append(res, s[i])
}
}
return string(res)
}
func replaceSpace(s string) string {
res := make([]byte, len(s)*3)
var pos int = 0
for i := range s {
if s[i] == ' ' {
res[pos] = '%'
res[pos+1] = '2'
res[pos+2] = '0'
pos += 3
} else {
res[pos] = s[i]
pos++
}
}
return string(res[0:pos])
}
func replaceSpace2(s string) string {
ss := []byte(s)
len1 := len(s)
var n int = 0
for i := 0; i < len1; i++ {
if ss[i] == ' ' {
n++
}
}
temp := make([]byte, n*2)
ss = append(ss, temp...) // 扩容
len2 := len(ss)
for i := len1 - 1; i >= 0; i-- {
if len2-1 == i {
break
}
if ss[i] == ' ' {
ss[len2-1] = '0'
ss[len2-2] = '2'
ss[len2-3] = '%'
len2 -= 3
} else {
ss[len2-1] = ss[i]
len2 -= 1
}
}
return string(ss)
}
KGo笔记
全部评论