用指定的字元或字串替換某個字串中出現的所有空格,當用字元替換字元是,自然是很簡單的,但是當使用字串替換字元時,如果還是從前往後遍歷,遇到指定字元就將其後所有字元往後移出足夠空間的話,當字串中的空格很多時,反覆的移動字元會帶來效能上的損失。但是如果是從後往前遍歷呢?可以先遍歷一次原字串,得到字串中空格的個數,然後就可以計算出實際需要的空間,再假設原字串所在緩衝區有足夠空間(否則新建乙個緩衝區從前往後遍歷就行了,這裡說的是在不新建緩衝區的情況下做這件事),那麼就可以計算出每個字元最後的位置,到演算法中可以用乙個指標q指向替換後字串的最後乙個字元(也就是字串結束符)所在的位置,指標p指向原字串的最後乙個字元(字串結束符),然後兩個指標向前遍歷,如果p指向的字元為空格,那麼就將替換字串從後向前填充到q指向的位置(該過程中p不動,q繼續向前,第一次遍歷後所做的計算保證q不會追上p),然後兩個指標繼續向前遍歷。這樣就得到乙個o(n)的演算法了。
如果從乙個方向走不通,那就換個方向試試!這種方法還可以用於陣列的插入等類似的情景中。
每日一題 替換空格
解題思路 統計字元陣列中的空白字元數 計算出轉換後的字串長度 若空白字元數為0,則直接返回 1 若空白字元數不為0,則從字串最後一位開始檢查 若檢查為空白字元,則進行替換並前移 若檢查為非空白字元,則直接進行賦值並前移一位。public class main02 統計字元陣列中的空白字元數 int ...
每日一題 倒置字串
題目描述 將一句話的單詞進行倒置,標點不倒置。比如 i like beijing.經過函式後變為 beijing.like i 輸入描述 每個測試輸入包含1個測試用例 i like beijing.輸入用例長度不超過100 輸出描述 依次輸出倒置之後的字串,以空格分割 示例1輸入 i like be...
每日一題 倒置字串
題目 題目描述 將一句話的單詞進行倒置,標點不倒置。比如 i like beijing.經過函式後變為 beijing.like i 輸入描述 每個測試輸入包含1個測試用例 i like beijing.輸入用例長度不超過100 輸出描述 依次輸出倒置之後的字串,以空格分割 輸入 i like be...