替換空格
題目:請實現乙個函式,把字串中的每個空格替換成「
%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 思路...