1. 程式人生 > >【死磕演算法·字串問題】空格替換

【死磕演算法·字串問題】空格替換

題目大意:

給定字串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函式