【死磕算法·字符串问题】空格替换

题目大意:

给定字符串str,将字符串内所有空格更换为“%20”。假设str后面有足够的空间容纳替换后的字符串。

思路:

1、遍历字符串得到空格个数n,进而得到替换后的字符串长度。如原字符串长度为l,替换后的字符串长度为l+2*n

2、替换后的字符串最后一个索引是l+2*n-1,从右往左赋值新字符串。

class Replacement {
public:
    string replaceSpace(string iniString, int length) {
        // write code here
        int spacenum = 0;
        for(int i = 0;i<length;i++){
            if(iniString[i]==' ')
                spacenum++;
        }
       int newlength= length + spacenum*2;
       iniString.resize(newlength);//注意要重新设置string的大小
       int i = newlength-1;
        while(i>=0){
            if(length>=1){
              if(iniString[--length]!= ' ')
                   iniString[i--] = iniString[length];
              else{
                  iniString[i--] = '0';
                  iniString[i--] = '2';
                  iniString[i--] = '%';
              }
            }
          }
       return iniString;
        
    }
};

注意:

1、用resize()扩展string长度

2、此题相当于实现string中的replace函数

猜你喜欢

转载自blog.csdn.net/gulaixiangjuejue/article/details/85014440