文章目录
1. 题目信息
1.1 题目描述
题目链接: 剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
1.2 测试用例
- 示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
- 限制:
0 <= s 的长度 <= 10000
2. 题目分析
2.1 逆序双指针填充
根据空格数目, 计算出最终字符串长度, 然后逆序双指针填充;
- 简单题目, 直接处理即可, 判定字符串中空格数, 可以用
std::count
;
3. 代码详情
3.1 C++
3.1.1 逆序双指针填充
// 执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
// 内存消耗:6.1 MB, 在所有 C++ 提交中击败了44.64%的用户
class Solution {
public:
string replaceSpace(string s) {
int spaceCnt = count(s.begin(), s.end(), ' ');
int expectedLen = s.length() + 2 * spaceCnt;
string ans;
ans.resize(expectedLen);
int srcIndex = s.length() - 1;
int dstIndex = expectedLen - 1;
while (dstIndex >= 0 && srcIndex >= 0) {
if (s[srcIndex] != ' ') {
ans[dstIndex--] = s[srcIndex--];
continue;
}
ans[dstIndex--] = '0';
ans[dstIndex--] = '2';
ans[dstIndex--] = '%';
srcIndex--;
}
return ans;
}
};
3.2 Python
3.2.1 生成list后拼装
# 执行用时:36 ms, 在所有 Python3 提交中击败了81.59%的用户
# 内存消耗:15 MB, 在所有 Python3 提交中击败了5.68%的用户
class Solution:
def replaceSpace(self, s: str) -> str:
return "".join([c if c != ' ' else "%20" for c in s])