05_空格字符替换

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

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

方法: 时间复杂度优先 ,重新创建一个char数组,其长度是原来的长度加上空格的个数乘以2,一个一个字符向新的数组中进行复制
碰到的问题: 刚开始时将长度设置为了原长度加上空格个数乘以3,哨兵后移了三个位置,忘记了忽略了替换后空格的位置,通过Debug查看找到了问题,将长度增加改为了空格个数的2倍,哨兵值后移2个位置。
solution:

class Solution {
public:
    string replaceSpace(string s) {
        if(s.empty())
            return "";
        int length = s.length();
        int newLenght=length,spaceCount=0;
        for(int i=0;i<length;i++){
            if(s[i] == ' ')
                spaceCount++;
        }
        newLenght += (spaceCount*2);
        char string2[newLenght+1];
        for(int i=0,j=0;i<length;i++){
            if(s[i] == ' '){
                string2[i+j*2] = '%';
                string2[i+j*2+1] = '2';
                string2[i+j*2+2] = '0';
                j++;
            } else{
                string2[i+j*2] = s[i];
            }
        }
        string2[newLenght] = '\0';
        return string2;
    }
};
发布了46 篇原创文章 · 获赞 19 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/li123_123_/article/details/104325368