剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
string replaceSpace(string s) {
#if 0
string ret(s.length() * 3 + 1, '\0');
for (int i = 0, j = 0;i < s.length();i++) {
if (s[i] != ' ') {
ret[j] = s[i];
j++;
}
else {
ret[j] = '%';
ret[j + 1] = '2';
ret[j + 2] = '0';
j += 3;
}
}
return ret;
#else
string array; //存储结果
for (auto &c : s) { //遍历原字符串
if (c == ' ') {
array.push_back('%');
array.push_back('2');
array.push_back('0');
}
else {
array.push_back(c);
}
/*
if(c == ' '){
array += "%20";
}
else{
array += 'c';
}*/
}
return array;
#endif
}
};
int main() {
Solution s;
string str = "We are happy.";
string ret = s.replaceSpace(str);
cout << ret << endl;
}
/*
复杂性分析
时间复杂度:O(n)O(n)。遍历字符串 s 一遍。
空间复杂度:O(n)O(n)。额外创建字符数组,长度为 s 的长度的 3 倍。
*/