替換空格

題目描述

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

解題分析

替換字符串中的空格,一、我們可以重頭開始往後遍歷,遇到空格就用%20替換,考慮到這樣的話需要移動的元素很多,每替換一個空格,他後面的所有元素都要移動,時間複雜度太高。二、從後往前替換空格,那麼只需要移動空格後面的字符串就行了,這樣大大減少時間複雜度。

//length爲牛客系統規定字符串輸出的最大長度,固定爲一個常數
class Solution {
public:
    void replaceSpace(char *str,int length) {
        //spaceLength記錄空格的個數
        int spaceLength=0;
        //OldLength記錄字符串長度
        int OldLength=0;
        //開始遍歷計數
        int k=0;
        while(str[k]!='\0'){
            OldLength++;
            if(str[k]==' '){
                spaceLength++;
            }
            k++;
        }
        //替換後的字符串長度
        int newLength=OldLength+spaceLength*2;
        //與牛客系統給的長度值比較
        if(newLength>length){return;}
        //從後面開始替換
        while(OldLength>=0&&newLength>OldLength){
            if(str[OldLength]==' '){
                str[newLength--]='0';
                str[newLength--]='2';
                str[newLength--]='%';
            }
            else{
                str[newLength--]=str[OldLength];
            }
            OldLength--;
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章