1. 程式人生 > >劍指Offer——替換空格

劍指Offer——替換空格

char col happy 無法 pub 字符 code 實現 如果

題目描述:

請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy.則經過替換之後的字符串為We%20Are%20Happy。

分析:

如果從前往後替換空格,那麽每遇到一個空格就需要將還沒遍歷到的字符後移,總的移動步數將會很多。

所以我們考慮先求出替換空格之後的字符串的長度,再從後往前遍歷進行替換,將會大大減少替換的次數,也不會覆蓋還沒遍歷的字符。

代碼:

 1 class Solution {
 2 public:
 3     void replaceSpace(char *str, int length) {
 4         int oldLength = strlen(str);    //
沒替換前的字符串長度 5 int newLength = oldLength; 6 for(int i = 0; i < oldLength; i++) { // 求出替換空格後的字符串長度 7 if(str[i] == ) 8 newLength += 2; 9 } 10 if(newLength > length) return; // 新長度超過限制的最長長度,則無法替換 11 while(oldLength >= 0 && newLength > oldLength) { //
從後往前替換空格 12 if(str[oldLength] == ) { 13 str[newLength--] = 0; 14 str[newLength--] = 2; 15 str[newLength--] = %; 16 oldLength--; 17 } else { 18 str[newLength--] = str[oldLength--]; 19 }
20 } 21 } 22 };

劍指Offer——替換空格