劍指offer面試題4

2021-08-16 01:58:49 字數 721 閱讀 4077



替換空格

題目:請實現乙個函式,把字串中的每個空格替換成「

%20」,例如輸入「

」。則輸出「

」。此題是將字串中的空格用

%20來代替,使用傳統的方法來做的話時間複雜度為o(

n2),效果上來看並不好,而且實現起來也非常的複雜,還存在將後面的字元覆蓋的情況,因此我們使用另一種方法來實現此題

我的方法是:

遍歷一遍字串,統計出空格的總數,求出替換完成的後的字串長度。

根據(1

)求出的替換完成後總長度,從原先字串的後面開始替換,這樣避免後面的字元被覆蓋,也解決了複雜的問題。

通過找空格將

%20插入新的字串中

**如下:

#include

#include

#include

void

change(

char

*arr

,int

len)

i++;

}count=count*2;

intlength=

len+count;

//最後的總長度(實際長度)

intj=

len;

while

(length>=0)

else}}

intmain()

執行結果如下:

劍指offer 面試題4

替換空格 本題的解決方法還有乙個限制,即在當前字串上進行替換操作,不能申請額外記憶體。所以,前提該字串陣列的總長度要比替換後的長度大,不然替換失敗。include using namespace std void replaceblank char str,int length int indexo...

替換空格(劍指offer面試題4)

分析 從頭到尾掃瞄字串,遇到空格就替換,導致後面的字元都要向後移,意味著總時間複雜度為o n 2 更好的辦法,從字串後面遍歷替換。先遍歷所有的空格,每多乙個空格,字串長度加2個,也就是說最後替換後的字串長度為原長度 2 空格數,設定兩個指標,指向原始字串末尾和新字串末尾,依次向前遍歷,原始字串指標遇...

劍指offer 面試題4 替換空格

題目由來 在網路程式設計中,如果url引數中含有特殊字元,如空格 等,可能導致伺服器端無法獲得正常的引數值。我們需要將這些特殊符號轉換成伺服器可以識別的字元。轉換的規則是在 後面跟上ascii碼的兩位十六進製制的表示。比如空格的ascii碼是32,即十六進製制的0x20,因此空格被替代成 20 思路...