替换空格

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

示例 1:

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

 想法1:用一个新的空间,来记录结果,而不是在原来的数组基础之上改变:

复制代码
class Solution {
public:
    string replaceSpace(string s) {
       string sp;//用新的数组来记录结果
for (int i = 0; i < s.size(); i++) { 
         
if (s[i] != ' ') {
sp.push_back(s[i]); }
else { sp.push_back('%'); sp.push_back('2'); sp.push_back('0'); } } return sp; } };
想法2:用双指针的方法来改变数组的元素:(因为长度变长,所以可能需要尝试先扩容,再进行从后面开始往前面循环,尝试之后发现果然是这样的)
复制代码
class Solution {
public:
    string replaceSpace(string s) {
        int flag = 0;//记录s内部总共有几个空格
        int size = s.size();
        for (int i = 0; i < size; i++) {
            if (s[i] == ' ') {
                flag++;
            }
        }
        s.resize(size+flag*2);//扩容s数组
        int fast = size - 1;//注意两个指针刚开始的位置,因为是从后开始循环的
        int slow = s.size() - 1;
        for (; fast >= 0; fast--) {
            if (s[fast] != ' ') {
                s[slow] = s[fast];
                slow--;
            }
            else {//放心操作,因为长度大小已经得到控制
                s[slow--] = '0';
                s[slow--] = '2';
                s[slow--] = '%';
            }
        }
        return s;
    }
};
复制代码

 

 
复制代码

 

posted @ 2022-09-05 21:34  铜锣湾陈昊男  阅读(4)  评论(0)    收藏  举报
点击右上角即可分享
微信分享提示