首页 > 其他分享 >剑☞offer 替换空格

剑☞offer 替换空格

时间:2022-10-15 16:13:41浏览次数:57  
标签:string offer int 复杂度 个数 空格 字符串 替换

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
例子:
输入:s = "We are happy."
输出:"We%20are%20happy."


代码参考

点击查看代码
class Solution {
public:
    string replaceSpace(string s) {
        int count=0;//统计空格的个数
        int sOldSize=s.size();
        for(int i=0;i<s.size();i++){
            if(s[i]==' '){
                count++;
            }
        }
        //扩充字符串s的大小,也就是每个空格替换成"%20"之后的大小
        s.resize(s.size()+count*2);
        int sNewSize=s.size();
        //从后先前将空格替换为"%20"
        for(int i=sNewSize-1,j=sOldSize-1;j<i;i--,j--){
            if(s[j]!=' '){
                s[i]=s[j];
            }else{
                s[i]='0';
                s[i-1]='2';
                s[i-2]='%';
                i-=2;
            }
        }
        return s;
    }
};

具体过程

原始数据

w e a r e y o u
0 1 2 3 4 5 6 7 8 9
  1. 遍历原始的字符串,计算出空格的个数
  2. 根据空格个数对字符串进行拓展,将' '替换为"%20",所以需要拓展4个新的空间
  3. 循环体部分,对遇到' '情况进行处理。

时间复杂度为O(n),空间复杂度为O(1)。

标签:string,offer,int,复杂度,个数,空格,字符串,替换
From: https://www.cnblogs.com/bikeandyou/p/16794362.html

相关文章