劍指offer-字串空格替換為“ ”

CoolSummmer發表於2016-08-27

一、問題描述

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

二、思路

由於規定是char*型別,所以沒法用string型別字串處理,我們從後往前依次替換,注意替換過程中需要考慮輸出長度不超過length。

三、程式碼

//length為牛客系統規定字串輸出的最大長度,固定為一個常數
class Solution {
public:
	void replaceSpace(char *str,int length) {
        if(str == NULL || length < 0)
            return ;
		int i = 0,blank_num = 0,old_num = 0;
        while(str[i] != '\0'){
            old_num++;
            if(str[i] == ' '){
                blank_num++;
            }
            ++i;
        }
        int new_num = old_num + blank_num * 2;
        if(new_num > length)
            return;
        while(old_num >= 0 && new_num > old_num){
            if(str[old_num] == ' '){
                str[new_num--] = '0';
                str[new_num--] = '2';
                str[new_num--] = '%';
            }else{
                str[new_num--] = str[old_num];
            }
            --old_num;
        }
        
	}
};


相關文章