剑指offer 4. 替换空格

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaohaibo_/article/details/85543779

请实现一个函数,把字符串中的每个空格替换成"%20"。

你可以假定输入字符串的长度最大是1000。
注意输出字符串的长度可能大于1000。

样例

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

不开额外空间的做法会使字符串长度总在变化,会比较麻烦。

class Solution {
public:
    string replaceSpaces(string &str) {
        string::size_type pos;
        string s1 = " ", s2 = "%20";
        pos=str.find(s1,0);
        while(pos!=string::npos){
            str.replace(pos,1,s2);
            pos = str.find(s1,pos+1);
        }
        return str;
    }
};

更好的做法是新开一个用于记录答案的字符串,原字符串的长度就不再会变化了

class Solution {
public:
    string replaceSpaces(string &str) {
        string ans;
        for(auto x : str){
            if(x == ' ') ans += "%20";
            else ans += x;
        }
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/zhaohaibo_/article/details/85543779