文章目錄
- 題目描述
- 思路
- 注意
- 代碼實現
題目描述
請實現一個函數,把字符串 s 中的每個空格替換成"%20"。
示例 1:
輸入:s = “We are happy.”
輸出:“We%20are%20happy.”
限制:
0 <= s 的長度 <= 10000
思路
直接調用replace (劃掉)
雙指針,不開辟新空間,空間復雜度O(1),時間復雜度O(N)
注意
時隔許久再寫雙指針的時候忘記了for的一個判定條件:后指針>前指針,這個條件的本質上是當后指針與前指針相遇,意味著要處理的元素都處理完了,就可以結束處理了,不用再繼續往下了,因為是原地修改(在原本的string上),因此將空格全部變成%20就好了,不用再將We再賦值一遍。可以有效提高代碼的效率。
代碼實現
class Solution {
public:string replaceSpace(string s) { //字符數組if(s.empty()){return s;}int num = 0;int len = s.size();for(char& c : s){if(c == ' '){num++;}}s.resize(len+2*num);for(int i = len - 1, j = s.size() - 1; i >= 0 && j > i; i--){if(s[i] == ' '){s[j--] = '0';s[j--] = '2';s[j--] = '%';}else{s[j--] = s[i];}}return s;}
};