请实现一个函数,把字符串 s 中的每个空格替换成"%20"。要求:空间复杂度 O(1)
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
题目要求空间复杂度为O(1),所以不能通过新建字符串的形式添加,我们需要在原字符串上实现原地修改:
直到 i == j(代表i之前已无空格);
class Solution{ public: string replaceSpace(string s) { int len = s.size(); int cnt = 0; for (int i = 0; i < len; ++i){ if (s[i] == ‘ ‘)cnt++; } s.resize(len + 2 * cnt); for (int i = len - 1, j = s.size() - 1; i < j && i >= 0; --i, --j){ if (s[i] != ‘ ‘){ s[j] = s[i]; }else{ s[j] = ‘0‘; s[j - 1] = ‘2‘; s[j - 2] = ‘%‘; j -= 2; } } return s; } };
原文:https://www.cnblogs.com/tao10203/p/13767487.html