2、替换空格

题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%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--
        }
    }
}

 

posted @ 2021-04-07 18:39  zqlucky  阅读(77)  评论(0编辑  收藏  举报