剑指offer—替换空格
题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
思路n
先从左向右遍历,统计空格的个数为sum,将数组的长度扩大到length+2*sum,并用双指针完成空格的替换,具体操作如下:
指针①定位到原数组的最后一个位置,指针②定位到扩容后数组的最后一个位置:
1:若指针①的前字符为非空格,指针②位置填充指针①定位到的当前字符,指针①和指针②分别向左移动一位
2:若指针①的当前字符为空格,则指针②依次填充‘0’,‘2’,‘%’
向左移动指针①并继续上面1、2步骤,直到指针①遇到数组的左边界
代码实现
string replaceSpace(string s) {
int n = s.size();
int sum = 0, i;
for(i = 0; i < n; i++){
if(s[i] == ' ') sum++;
}
i--;
n = n + sum*2;
s.resize(n); //没有resize会报错
for(int j = n-1;i >= 0; j--, i--){
if(s[i] == ' '){
s[j--] = '0';
s[j--] = '2';
s[j] = '%';
}else{
s[j] = s[i];
}
}
return s;
}