劍指offer之空格替換

2021-10-18 01:15:07 字數 968 閱讀 2226

請實現乙個函式,把字串 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...