5. 替換空格
題目描述
請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
思路
思路就是書上的思路。兩個指針操作。
傳入的指針實際上上是數組頭;
注意參數 length 不是字符的長度,而是數據空間的長度;
所以,字符的長度,要根據 ‘\0’ 的條件,自己去計算一遍;
好久沒寫指針,都忘了 怎麼遍歷值了。。。。
代碼
class Solution {
public:
void replaceSpace(char *str,int length) {
if (str == NULL || length <= 0) return;
int n_blank = 0;
int actual_length = 0;
int i = 0;
while (*(str + i) != '\0') {
actual_length++;
if ( *(str + i) == ' ' ) n_blank++;
i++;
}
int new_len = actual_length + 2*n_blank;
if (new_len > length) return;
int idx_1 = actual_length;
int idx_2 = new_len;
while (idx_1 >= 0 && idx_1 < idx_2) {
if (*(str+idx_1) != ' ') {
*(str + idx_2) = *(str+idx_1);
idx_2--;
}
else {
*(str + idx_2) = '0';
idx_2--;
*(str + idx_2) = '2';
idx_2--;
*(str + idx_2) = '%';
idx_2--;
}
idx_1--;
}
}
};