牛客網----替換空格

題目描述
請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
思路:
1.題目是將空格替換成%20,也就是把1個字符替換成3個字符,那每個空格後面的字符都要向後移,否則就會覆蓋之前的字符
2.如果從前往後找空格,那每找到一個,就要移動後面是字符,時間複雜度爲O(N^2)
3.不妨從後向前找,先統計出空格的個數,再從後開始移動,這樣時間複雜度就是O(1)

  • 代碼如下(前提是字符串後面有足夠的空間)
void replaceSpace(char *str,int length) {
        int count=0;
        for(int i=0;i<length;i++)
        {
            if(str[i]==' ') count++;//統計個數
        }
        for(int i=length-1;i>=0;i--)
        {
            if(str[i]!=' ')
                str[i+2*count]=str[i];
            else
            {
                str[i+2*count]='0';
                str[i+2*count-1]='2';
                str[i+2*count-2]='%';
                count--;
            }
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章