【劍指**】5.替換空格

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--;
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章