前言
记录自己刷题思路,时常复习。
一、字符串
二、解题思路
go中 string类型可以看作为一个字节序列,可使用string[i]来索引string种的第i个字节
s := "we are happy" fmt.Printf("type: %T; value:%v", s[0], s[0])
输出为
type: uint8; value:119
在go中byte是内置类型uint8的一个别名。
通过go内置函数strings.Count获取当前字符串中空格的个数
因此我们可以初始化一个长度 = 需要变换的字符串长度 + 该字符串中空格个数*2的byte切片 ss
遍历该字符串s,当遍历到空格时,则在ss的当前位置开始依次填入‘%’、‘2’、‘0’,如果不是空格则正常赋值
go代码如下:
func replaceSpace(s string) string {
spaceTimes := strings.Count(s, " ")
var l int = len(s)
var ss = make([]byte, l+spaceTimes*2, l+spaceTimes*2)
var j int = 0
for i := 0; i < l; i++ {
if s[i] == 32 {
ss[j], ss[j+1], ss[j+2] = '%', '2', '0'
j += 3
} else {
ss[j] = s[i]
j += 1
}
}
return string(ss)
}