替換字串中的空格

2021-09-01 05:31:01 字數 1047 閱讀 7233

看到這個題目後,我們首相應該想到的是:原來的乙個空格字元,經過替換後就成了三個字元,因此字元會變長,那麼很有可能會覆蓋原來的字元。如果是在乙個新建立的字串上做替換,就可以有足夠的空間,顯然題目上沒有明顯的提出,那就應該在原來的字串上做替換

求出該字串的長度和字串中含有的空格數

求出替換後的字串的總長度

準備兩個指標pstr1,pstr2,pstr1指向原始字串的末尾,pstr2指向替換後的字串末尾

向前移動pstr1和pstr2,逐個將pstr1指向的字元拷貝到pr2指向的位置,知道遇到第乙個空格為止

遇到空格後,將pstr1向前移動一次,然後在pstr2之前插入「%20」,插入乙個字元pstr2就要向前移動一次

繼續向前移動pstr1和pstr2,逐個將pstr1指向的字元拷貝到pstr2指向的位置,遇到空格繼續做「5」操作,直到pstr2和pstr1相等,說明空格已經全部替換完畢

(**《劍指offer》)

class solution 

++i;

} //擴充套件第二個字串,

//空格的數量*2是因為「%20」一共三個字元,需要在原來每個空格的位置再加上兩個字元的長度,才是第二個字串的

int newlength = factlength + spacenumber * 2;

if (newlength > length)

//從後向前替換,這樣會減少替換的次數

char *pstr1 = str + factlength;

char *pstr2 = str + newlength;

//如果pstr2 <= pstr1 了,說明剩下的pstr2和pstr1的字串相同了,也就沒有「 」了,就不用替換了

while (pstr2 > pstr1 && pstr1 >= 0)

else

--pstr1;

} return;

}};

字串中的替換空格

題目 把字串中的每個空格替換成 20 思路 直觀的做法是從頭到尾掃瞄字串,遇到空格就做替換,然而由於將乙個字元替換成3個字元,我們必須將空格後面的所有字元都後移兩個位元組。這樣沒次遇到空格,都會移動字元。對於這種問題,當字串 或陣列 長度變大,從前往後操作時移動次數多時,可以考慮從後往前操作。ps ...

替換字串中的空格

這是乙個關於字串的題目,解決這個問題有如下方法。最直觀的方法,利用輔助空間,開始遍歷原字串,是空格則在輔助空間中用 20 字串替代,不是則直接複製到輔助空間中。此方法時間複雜度為o n 空間複雜度為o n 因為需要遍歷原字串,所以時間複雜度不能縮減。如果考慮空間複雜度為o 1 有一種從空間複雜度概念...

替換字串中的空格

替換字串中的空格的方法有很多,在這裡我們實現一種時間複雜度與空間複雜度都為o n 的方法,使用c 語言實現。例如字串talk is cheap show me the code,我們要將其替換為talk is cheap show me the code,並且列印到螢幕上。方 述 定義乙個字元型指標...