题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:第一遍遍历得到空格数,可以计算得到新字符串的长度。第二遍用两个index,一个指向旧字符串的末尾,另一个指向新字符串的末尾。碰到空格就是使用%20替换。
func replaceSpace(str []byte, length int) { count := 0 // 遍历一遍字符串, 统计字符出现的数目, 计算替换后的字符串长度 for i:=0; i<length; i++ { if str[i] == ' '{ count++ } } newlength := length + count*2 // 两个index,一个指向length-1, 另一个指向newlength-1,遍历一遍字符串,完成替换 for l,nl := length-1,newlength-1; l>=0 && nl>=0; { if str[l]==' '{ str[nl] = '0' nl-- str[nl] = '2' nl-- str[nl] = '%' nl-- l-- } else { str[nl] = str[l] nl-- l-- } } }