题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
- 1、新存一个字符串,遍历原字符串,遇到空格就把"%20"加进去,没有遇到就把旧的字符串中的字符加进入
- 2、但是如果面试要求我们在原字符串上进行操作
- 可以先遍历原字符串,找出空格字符的个数,每个空格字符替换掉就相当于增加了两个字符的长度。
- 新字符串长度=原字符串长度+空格字符*2
- 新建两个指针,point1和point2,指向新旧字符串的尾部
- 从后往前扫描,若point1<=0时说明扫描完毕。(注意:前提是在point1<point2)
class Solution {
public:
void replaceSpace(char *str,int length) {
int sumlength=0;
int empty = 0;
for(int i=0;str[i]!='\0';i++){
if(str[i] == ' '){
empty++;
}
}
sumlength = length+empty*2;
if(sumlength<=length){
return;
}
str[sumlength-1]='\0';
int point1=length-1;
int point2=sumlength-1;
while(point1>=0&&point2>point1){
if(str[point1]==' '){
str[point2--]='0';
str[point2--]='2';
str[point2--]='%';
}else{
str[point2--]=str[point1];
}
point1--;
}
}
};
网友评论