您的位置:首页 > 其它

字符串空格替换

2017-08-16 22:12 225 查看
1、问题

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

class Solution {
public:
void replaceSpace(char *str,int length) {

}
};
2、解答
思路:从前向后记录‘
’(空格字符)数目,从后向前替换‘ ’。 重点:从后向前替换的时候的技巧
,例如:“We Are Happy”。

0 1 2 3 4 5 6 7 8 9 10 11
W e   A r e   H a p p  y

可以得知cnt=2;//空格的个数。所以在替换的时候7~11的字母要向后移动count×2个位置,3~5字母要向后移动(count-1)×2个位置。 所以得到 :
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
W e A r e H a p p y在替换的时候直接在空格处写入%20了就可以了。
具体代码如下:

//将空格用"%20"替换

#include<iostream>
using namespace std;

class Solution{
public:
void replaceSpace(char *str,int length)
{
int cnt=0;//记录空格数目
int i,j;
for(i=0;i<length;i++){
if(str[i]==' ')
cnt++;
}
for(i=l
4000
ength-1;i>=0;i--){
if(str[i]!=' ')
str[i+2*cnt]=str[i];
else{
cnt--;
str[i+2*cnt]='%';
str[i+2*cnt+1]='2';
str[i+2*cnt+2]='0';
}
}
}
};

int main()
{

char a[30]="We Are Happy.";
char *ptr=a;
Solution s;
s.replaceSpace(ptr,12);
cout<<ptr;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: