劍指offer 面試題4 替換空格

2021-08-13 02:45:05 字數 663 閱讀 1025

**:

class solution 

after_length = before_length + black_length * 2; // 最終字串的長度。原來有乙個空格,現在變成了三個字元:'%''2''0'

if(after_length > length)

return ;

int after_index = after_length; //定義兩個下標

int before_index = before_length; // 乙個指向最終形成的字串的最後乙個,另乙個指向原來的字串的最後乙個

while(before_index >= 0 && after_index > before_index)

else

-- before_index;

}}};

分析:該解法的時間複雜度是 o(1)。在此,只說一下最後的 while() 迴圈。假設定義了兩個指標 p1,p2.  p1指向原來字串的最後乙個字元,也就是 hello world中最後乙個 "\0",p2指向最終字串的最後一位,剛開始為 null 。從後往前遍歷,如果碰到的不是空格,就將 p1指向的內容 賦值給 p2指向的內容。不斷往前遍歷。如果碰到的是空格,那麼,直接將p2指向的內容依次變成 %20 , p2--  ,知道迴圈結束。

替換空格(劍指offer面試題4)

分析 從頭到尾掃瞄字串,遇到空格就替換,導致後面的字元都要向後移,意味著總時間複雜度為o n 2 更好的辦法,從字串後面遍歷替換。先遍歷所有的空格,每多乙個空格,字串長度加2個,也就是說最後替換後的字串長度為原長度 2 空格數,設定兩個指標,指向原始字串末尾和新字串末尾,依次向前遍歷,原始字串指標遇...

劍指offer 面試題4 替換空格

題目由來 在網路程式設計中,如果url引數中含有特殊字元,如空格 等,可能導致伺服器端無法獲得正常的引數值。我們需要將這些特殊符號轉換成伺服器可以識別的字元。轉換的規則是在 後面跟上ascii碼的兩位十六進製制的表示。比如空格的ascii碼是32,即十六進製制的0x20,因此空格被替代成 20 思路...

劍指offer 面試題4 替換空格

由於我在實現的時候使用的是c 的string,所以從後往前複製和從前往後複製,時間複雜度是一樣的。如果使用char 陣列實現,則從後往前複製更高效。重點是掌握這種反向思維。class solution 初始化新string string res s.size 2 countblank,a 必須將si...