字串替換空格

2021-08-07 01:19:22 字數 659 閱讀 5005

點:抽象問題簡化問題

題意:乙個字串,比如"  aaa  baea erwe dsa dsa f a ",替換其中的空格字元為"%20"。

劍指offer面試題4

思路:這個問題的點在於,如果正常從頭到尾替換的話,每乙個被替換空格,它後面的全部字串都需要做整體移動

所以要設法想出,怎麼能夠減少字串移動

非空格字元需要複製,是不能被減少的。空格可以無處不在,也不能依靠位置。

較合理辦法:首先從前向後遍歷一次,得出有多少個空格,然後計算出結果字串的長度並建立空間,然後對原始字串從後向前遍歷一次,遇到空格寫"%20",非空格就複製。

注意:字串末尾的\0要留出空間。

**:

#include #include std::string replace_spaces (const std::string &raw) 

}char buf[raw.length() + num * 2 + 1] = ;

for (int i = raw.length(), j = raw.length() + num * 2; i >= 0, j >= 0; i--) else

}std::string res = buf;

return res;

}int main ()

替換空格(字串)

思路一 利用string類的replaceall方法 public class solution 思路二 將字串轉換為字元陣列 建立乙個新的stringbuffer的物件,遍歷字元陣列,將不為空格的字元直接存入 當遇到空格時,存入 20 public class solution return st...

字串 替換空格

方法 從後往前替換,先求出字串總長度 空格數 新字串長度,然後兩個指標分別指向原始字串末尾和新字串末尾,依次替換,遇到空格時則替換為 0 2 include includevoid replaceblank char string,int length int newlength originall...

字串替換空格

思路 從字串的後面開始插入替換字元 首先遍歷整個字串得到插入後的總長度和空格的個數,再用兩個指標分別指向 p1指向替換前字串的末尾,p2指向替換後字串的末尾 當p1指向不是空格時,將其內容插入p2所在記憶體 當p1指向空格,用字元 20 插入 當p1 p2,或p1指向字串頭時 所有空格均已替換 則結...