劍指offer 面試題5 替換空格(吐槽C )

2021-10-04 16:36:39 字數 962 閱讀 3888

題目:

思路:字串的處理,一般向後擴容重新分配記憶體的,最好從尾部建立指標。

指標當做陣列,但指標本身不檢查超出陣列範圍。

字串處理時刻注意到最後乙個『\0』字元

先遍歷一遍,得到空格總數,記錄,因此得到替換後的總長度。

建立兩指標, 乙個指向原始字串尾部,乙個指向替換字串尾部

向前遍歷,逐一替換。

class

solution

int newlength = strnum+

2*spacenum;

str[newlength--]=

'\0'

;for

(int i=strnum-

1;i>=

0;i--

)else}}

};

我想吐槽c++的就在這裡: 這題如果用python來解的話,僅僅一行**!算了直接剛python吧。

# -*- coding:utf-8 -*-

class

solution

:# s 源字串

defreplacespace

(self, s)

:# write code here

return s.replace(

' ',

"%20"

)

不過說是這樣說,c++和python比較,就是乙個是全部需要手動調節的賽車(c++), 乙個是自動檔的汽車(python)。不過賽車可以經過賽車手的調節,可以將效能發揮到機制,甩自動擋汽車幾條街。自動擋汽車只是容易快速上手,適合普通大眾人。(上述例子純屬個人觀點,不喜勿噴)

劍指Offer 面試題5替換空格

note 劍指offer的題可以在牛客網上做題驗證思路的正確性 思路 因為stringbuffer本身是可變字串序列,可以修改,實際上它的可變是犧牲空間換取的。替換可能導致超出其容量,char陣列的複製和新建。public string replacespace stringbuffer str s...

劍指offer 面試題5 替換空格

拿到這個題時,第乙個要考慮的就是記憶體夠不夠的問題。因為原來空格是乙個字元,現在要將乙個空格替換為三個字元,記憶體會變大。現在假設是在記憶體足夠的情況下修改。過程如下 完成乙個空格的替換 完成替換 測試用例的考慮 如下 void changestr char arr,int sz int i 0 i...

劍指offer面試題5 替換空格

面試題5 替換空格 思路一 新建乙個足夠的大小的字串空間,然後依次將字元拷貝,遇到空格進行三個字元的填充,接著重複執行前面的操作將整個字串替換完畢。時間複雜度o n 空間複雜度o n 思路二 從頭到尾掃瞄字串,每次遇到空格將後續字元向後移動兩個位置,然後進行填充。時間複雜度o n 2 思路三 從尾部...