劍指offer面試題5 替換空格(加入理解的部分)

2021-09-11 03:26:17 字數 663 閱讀 2742

題目見書《劍指offer》51頁。

程式設計思路,與書一致;原本打算用乙個指標的,但是隨之而來的是時間複雜度變大。

//面試題5:替換空格

#include #includeusing namespace std;

//length為字串的總容量

void replaceblank(char string, int length)

int newlength = originallength + numberofbank * 2;

int indexoforiginal = originallength; //指向舊字串末尾

int indexofnew = newlength; //指向新字串末尾

while (indexoforiginal >= 0 && indexofnew > indexoforiginal)

else

--indexoforiginal; }}

int main()

結果如:

小技巧:**中不加入system(「pause」); 結果介面閃退,可用快捷鍵ctrl+f5解決。

劍指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 思路三 從尾部...