劍指Offer 面試題05 替換空格

2022-08-29 17:42:14 字數 558 閱讀 1178

請實現乙個函式,把字串 s 中的每個空格替換成"%20"。

示例 1:

限制:0 <= s 的長度 <= 10000

暴力方法,從前向後遍歷,遇到空格就替換,則每次替換需要移動空格後面o(n)個字元,所以總時間複雜度為o(n^2)。

我們可以先計算出空格數,然後可得替換後新串總長度,設兩個指標i和j分別指向原來字串末尾和新串末尾,向前移動指標,如果遇到空格就替換,否則將原來字元移到新的位置。

時間複雜度:o(n)

空間複雜度:o(1)

class solution         

int oldlen = s.size(), newlen = cnt * 2 + oldlen, j = newlen - 1;

s.resize(newlen);

for (int i = oldlen - 1; i >= 0 && j != i; --i) else

}

return s;

}};

劍指Offer 面試題05替換空格

劍指offer面試題彙總 題目描述 請實現乙個函式,把字串s中的每個空格替換成 20 輸入輸出 解決方案 直接替換 return s.replace 20 不符合題意,題目想說的是用char陣列怎麼實現 雙指標 先計算空格數量 建立乙個新陣列容量加上空格替換字串的長度 p1指向字串尾部 p2指向陣列...

劍指offer 面試題05 替換空格為20

替換空格 請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 1 限制 0 s 的長度 10000 解題思路 1.利用c 11 以後遍歷容器的方法 for auto a s res 為新建的string class solution return res 2.一般像這種需要向後擴充容量重新整...

劍指offer面試題 替換空格

題目 請實現乙個函式,把字串中的每個空格替換成 20 例如輸入 則輸出 解析 時間複雜度為o n 的解法。完整 及測試用例實現 cpp view plain copy include using namespace std include length 為字元陣列string的總容量 void re...