请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
例子:
输入:s = "We are happy."
输出:"We%20are%20happy."
点击查看代码
class Solution {
public:
string replaceSpace(string s) {
int count=0;//统计空格的个数
int sOldSize=s.size();
for(int i=0;i<s.size();i++){
if(s[i]==' '){
count++;
}
}
//扩充字符串s的大小,也就是每个空格替换成"%20"之后的大小
s.resize(s.size()+count*2);
int sNewSize=s.size();
//从后先前将空格替换为"%20"
for(int i=sNewSize-1,j=sOldSize-1;j<i;i--,j--){
if(s[j]!=' '){
s[i]=s[j];
}else{
s[i]='0';
s[i-1]='2';
s[i-2]='%';
i-=2;
}
}
return s;
}
};
具体过程
原始数据
w | e | a | r | e | y | o | u | ||
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
- 遍历原始的字符串,计算出空格的个数
- 根据空格个数对字符串进行拓展,将' '替换为"%20",所以需要拓展4个新的空间
- 循环体部分,对遇到' '情况进行处理。
时间复杂度为O(n),空间复杂度为O(1)。
标签:string,offer,int,复杂度,个数,空格,字符串,替换 From: https://www.cnblogs.com/bikeandyou/p/16794362.html