leetcode

替换空格

题目链接

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

示例 1: 输入:s = “We are happy.” 输出:”We%20are%20happy.”

替换空格

class Solution {
public:
    std::string replaceSpace(std::string s) {
        int oldsize = s.size(), cnt =0;
        for (char ch:s) if (ch==' ') cnt++; // 统计空格总数
        s.resize(oldsize + 2*cnt); // 扩充字符串s,每个空格替换成"%20"之后的大小
        int newsize = s.size();
        int left= oldsize-1, right = newsize-1;
        for (;left< right; left--, right--){
            if (s[left]!=' ') s[right] = s[left];
            else {
                s[right] = 0, s[right-1] = 2, s[right-2] ='%';
                right-=2;
            }
        }
        return s;
    }
};