今天这道题也不是很难,但我确实没想到,感觉自己逻辑思维能力太差了。

题目

%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--
		}
	}
}

这样就实现了在原先的数组上进行空格替换的操作。