今天这道题也不是很难,但我确实没想到,感觉自己逻辑思维能力太差了。
题目
%20We Are Happy.We%20Are%20Happy.
输入
We are Happy.
输出
We%20Are%20Happy.
解题思路
%20
func replaceSpace(str []byte) []byte {
rlt := make([]byte, 0)
for i:=0; i<len(str); i++ {
if str[i] == []byte(" ")[0] {
rlt = append(rlt, []byte("%20")...)
} else {
rlt = append(rlt, str[i])
}
}
return rlt
}
但这种方法空间复杂度较高,是否可以降低空间复杂度呢?
2.原数组修改
既然不能重新定义一个数组,那么我们可以考虑在本数组上做文章。
func replaceSpace(str []byte) {
count := 0
for i:=0; i<length(str); i++ {
if str[i] == ' '{
count++
}
}
newlength := length(str) + count*2
for i,j := length(str)-1,newlength-1; i>=0 && j>=0; {
if str[i]==' '{
str[j] = '0'
j--
str[j] = '2'
j--
str[j] = '%'
j--
i--
} else {
str[j] = str[i]
j--
i--
}
}
}
这样就实现了在原先的数组上进行空格替换的操作。