劍指offer 面試題4 替換空格

2021-08-08 21:50:24 字數 651 閱讀 7235

由於我在實現的時候使用的是c++的string,所以從後往前複製和從前往後複製,時間複雜度是一樣的。

如果使用char*陣列實現,則從後往前複製更高效。

重點是掌握這種反向思維。

class solution 

// 初始化新string

string res(s.size() + 2 * countblank, 'a');

// 必須將size_t型別轉為int,不然i始終非負,無法結束迴圈

for(auto i = int(s.size())-1, j = int(res.size())-1; i >= 0; --i, --j)else

res[j] = s[i];

}return res;

}};

附char*陣列版本:

class

solution

char* pend = str + valid_length + 2 * count;

if(valid_length + 2 * count > length)

return;

*pend = '\0';

while(valid_length--)else}}

};

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

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

劍指offer 面試題4 替換空格

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

劍指offer 面試題4 替換空格

class solution after length before length black length 2 最終字串的長度。原來有乙個空格,現在變成了三個字元 2 0 if after length length return int after index after length 定義兩個...