請實現乙個函式,把字串 s 中的每個空格替換成"%20"示例:
看到這道題,我們首先應該想到的是原來的空格被替換成 『%』,『2』,『0』著三個字元,因此字串會變長,如果在原來的字串上進行替換,那麼就有可能覆蓋修改在該字串後面的記憶體。如果是建立新的字串並在上面進行替換,那麼我們可以自己分配足夠的記憶體。
考慮執行替換操作,通常我們會從頭掃瞄字串,每次碰到空格字元時進行替換,由於乙個字元替換成三個字元時,我們必須將空格後面所有的字元都後移2個位元組,否則就會有兩個字元被覆蓋。
我們可以先遍歷一遍字串,找出並統計出空格的數量,並由此可以計算出替換之後字串的總長度,每替換乙個空格則長度需要增加2,所以替換後的字串長度等於 原有的字串長度+2*空格數量,這次我們不在從前開始遍歷,而是從後開始遍歷,我們可以定義兩個索引,乙個指向替換後的末尾l1,另外乙個指向原來字串的末尾12,當碰到空格時就替換將s[l1–]= 『0』, s[l1–]=『2』,s[l1–]=』%』,如果不是就將s[l1–]=s[l2]即可。
一下是*c++***,**leetcode
彪莫婆婆
class
solution
int length = s.
length()
-1;for
(int i =
0; i<= length; i++)}
int length2 = s.
length()
-1;while
(length >=
0&& length2 >= length)
else
length --;}
return s;}}
;
知乎彪莫婆婆
leetcode
劍指Offer之 替換空格
把字串中的空格用 20代替。統計空格個數,從後往前賦字元。include using namespace std 函式功能 把字串中的空格用 20代替 思路 統計空格個數,從後往前賦字元 注意點 要判斷字串的位元組個數是否夠替換後的字元數,如果不夠則不能替換 void replacebland ch...
。。。劍指Offer之 替換空格。。。
1 public string replacespace stringbuffer str 7int count 0 統計空格數目 8int length str.length 9 迴圈用來統計空格數目 10for int i 0 i length i 14 15 新的字元個數 原來字串長度 2倍的...
劍指offer 替換空格
思路 首先遍歷字串,找出空格的數量countspace,計算變換後的總長為newlength str.length 2 countspace。定義心得字元陣列,長度為newlength 從字串的後面開始複製和替換,如果不是空格,就複製,如果是空格,就變為 20.難點 牛客網上傳入引數是stringb...