替换空格(剑指Offer-05)

题面

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

示例

1输入:s = "We are happy."
2输出:"We%20are%20happy."

限制

10 <= s 的长度 <= 10000

思路

resize一下,然后双指针逆序遍历。

代码

 1class Solution {
 2public:
 3    string replaceSpace(string s) {
 4        int count = 0, len = s.size();
 5        for (char c : s)
 6            count += (c == ' ');
 7
 8        s.resize(len + 2 * count);
 9
10        for(int i=len-1, j=s.size()-1; i<j; i--, j--) {
11            if (s[i] != ' ')
12                s[j] = s[i];
13            else {
14                s[j-2]='%', s[j-1]='2', s[j]='0';
15                j -= 2;
16            }
17        }
18        return s;
19    }
20};