這是乙個關於字串的題目,解決這個問題有如下方法。
最直觀的方法,利用輔助空間,開始遍歷原字串,是空格則在輔助空間中用「%20」字串替代,不是則直接複製到輔助空間中。此方法時間複雜度為o(n),空間複雜度為o(n)。
因為需要遍歷原字串,所以時間複雜度不能縮減。如果考慮空間複雜度為o(1),有一種從空間複雜度概念上取巧的方法,就是將輔助空間直接取字串允許的上限,這樣空間複雜度為o(1),上限值可以取size_t的最大值。另外一種空間複雜度為o(1)的方法是,先遍歷一遍原字串,得到空格數,求出改變後的字串長度, 得到原字串長度,維持乙個剩餘空格數量,然後從後先前遍歷,遇到空格則替換為「02%」,剩餘空格數量減一,當剩餘空格數量為0時,結束。
功能測試,開頭有空格,結尾有空格,中間有乙個空格,中間有多個空格。或者輸入的只有空格。
特殊輸入測試,輸入的為空字串。
class solution
cout<0)
}
}return ;
}};
字串中的替換空格
題目 把字串中的每個空格替換成 20 思路 直觀的做法是從頭到尾掃瞄字串,遇到空格就做替換,然而由於將乙個字元替換成3個字元,我們必須將空格後面的所有字元都後移兩個位元組。這樣沒次遇到空格,都會移動字元。對於這種問題,當字串 或陣列 長度變大,從前往後操作時移動次數多時,可以考慮從後往前操作。ps ...
替換字串中的空格
替換字串中的空格的方法有很多,在這裡我們實現一種時間複雜度與空間複雜度都為o n 的方法,使用c 語言實現。例如字串talk is cheap show me the code,我們要將其替換為talk is cheap show me the code,並且列印到螢幕上。方 述 定義乙個字元型指標...
替換字串中的空格
看到這個題目後,我們首相應該想到的是 原來的乙個空格字元,經過替換後就成了三個字元,因此字元會變長,那麼很有可能會覆蓋原來的字元。如果是在乙個新建立的字串上做替換,就可以有足夠的空間,顯然題目上沒有明顯的提出,那就應該在原來的字串上做替換 求出該字串的長度和字串中含有的空格數 求出替換後的字串的總長...