剑指offer:2.替换空格

题目

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。牛客网oj地址

样例

1
2
3
输入:"We are happy."

输出:"We%20are%20happy."

解题思路

这个题默认char字符串数组是提供充足的空间的,刚第一下看题没反应过来:wlk:。具体的解题思路是先遍历一遍数组得到将空格转换后的数组的长度,然后使用双指针法从后往前进行替换,具体思路见代码和注释。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
void replaceSpace(char *str,int length) {
//获取转换之后的长度
int realLength=length;
for (int i = 0; i < length; ++i) {
if(str[i]==' ')
realLength+=2;
}
//双指针从后往前替换
int i=length-1,j=realLength-1;
while (i>=0){
if(str[i]!=' '){
str[j--]=str[i];
} else{
str[j--]='0';
str[j--]='2';
str[j--]='%';
}
--i;
}
}
};