剑指offer:2.替换空格

Posted by 尹傲雄 on April 4, 2019   

题目

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。牛客网oj地址

样例

输入:"We are happy."

输出:"We%20are%20happy."

解题思路

这个题默认char字符串数组是提供充足的空间的,刚第一下看题没反应过来wlk。具体的解题思路是先遍历一遍数组得到将空格转换后的数组的长度,然后使用双指针法从后往前进行替换,具体思路见代码和注释。

class Solution {
public:
    void replaceSpace(char *str,int length) {
        //获取转换之后的长度
        int realLength=length;
        for (int i = 0; i < length; ++i) {
            if(str[i]==' ')
                realLength+=2;
        }
        //双指针从后往前替换
        int i=length-1,j=realLength-1;
        while (i>=0){
            if(str[i]!=' '){
                str[j--]=str[i];
            } else{
                str[j--]='0';
                str[j--]='2';
                str[j--]='%';
            }
            --i;
        }
    }
};