O n 實現替換空格

2021-06-23 09:48:39 字數 1058 閱讀 7410

題目:請實現乙個函式,把字串中的每個空格替換成"%20".要求時間複雜度為o(n)。

思路:

我們從字串的後面開始複製和替換。首先準備兩個指標,p1和p2。p1指向原始字串的末尾,而p2指向替換之後的字串的末尾(如圖(a)所示)。接下來我們向前移動指標p1,逐個把它指向的字元複製到p2指向的位置,直到碰到第乙個空格為止。此時字串包含如圖(b)所示,灰色背景的區域是做了字元拷貝(移動)的區域。碰到第乙個空格之後,把p1向前移動1格,在p2之前插入字串"%20"。由於"%20"的長度為3,同時也要把p2向前移動3格如圖(c)所示。

我們接著向前複製,直到碰到第二個空格(如圖(d)所示)。和上一次一樣,我們再把p1向前移動1格,並把p2向前移動3格插入"%20"(如圖(e)所示)。此時p1和p2指向同一位置,表明所有空格都已經替換完畢

注:圖中帶有陰影的區域表示被移動的字元。(a)把第乙個指標指向字串的末尾,把第二個指標指向替換之後的字串的末尾。(b)依次複製字串的內容,直至第乙個指標碰到第乙個空格。(c)把第乙個空格替換成'%20',把第乙個指標向前移動1格,把第二個指標向前移動3格。(d)依次向前複製字串中的字元,直至碰到空格。(e)替換字串中的倒數第二個空格,把第乙個指標向前移動1格,把第二個指標向前移動3格。

#include using namespace std;

void replace(char src,int max)//max是字串陣列允許的最大長度

char *p1=src+len;//指向末尾

char *p2=src+len+2*num;

int i=len;

while(i>=0)

else

i--; }

}void main()

{ char p[100];

cin.getline(p,100);

replace(p,100);

cout<

jquery 替換空格

如果是用php替換所有的空格,可以直接這樣寫 srt str replace str 替換所有的空格.但自己有js這樣 str str.replace 寫替換空格的時候,打乙個空格可以替換,如果打兩個空格以上,就不可以了。js去除空格的方法目前共有12種 實現1 string.prototype.t...

替換空格(java)

建立乙個空的字串newstr,掃瞄當前字串,如果是空白符則替換成 20 追加到newstr中 如果是其他字元則追加到newstr中 處理物件 stringbuffer str 定義資料型別 1.stringbuilder newstr 該物件用於儲存結果 2.string replacestr 20...

lintcode,空格替換

設計一種方法,將乙個字串中的所有空格替換成 20 你可以假設該字串有足夠的空間來加入新的字元,且你得到的是 真實的 字元長度。你的程式還需要返回被替換後的字串的長度。樣例 對於字串 mr john smith 長度為 13 替換空格之後,引數中的字串需要變為 mr 20john 20smith 並且...