1、题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
2、分析
根据书中的思路,先遍历,统计字符串长度和空格个数,计算新的字符串的长度,然后用两个指针,一个指向新字符串最后一位,一个指向就字符串最后一位,开始复制,如果遇到空格替换成%20就好。
3、代码
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==NULL||length<=0) return ;
int ori_len=0;
int blank=0;
int i=0;
while(str[i]!='\0'){
++ori_len;
if(str[i]==' ')
++blank;
++i;
}
int new_len=ori_len+(2*blank);
int index_ori=ori_len;
int index_new=new_len;
while(index_ori>=0&&index_new>index_ori){
if(str[index_ori]==' '){
str[index_new--]='0';
str[index_new--]='2';
str[index_new--]='%';
}
else {
str[index_new--]=str[index_ori];
}
--index_ori;
}
}
};
//指针统计
class Solution {
public:
void replaceSpace(char *str,int length) {
if(str==NULL||length<=0) return ;
int ori_len=0;
int blank=0;
int i=0;
const char* p=str;
while((*p)!='\0'){
++ori_len;
if(*p==' ')
++blank;
++p;
}
int new_len=ori_len+(2*blank);
int index_ori=ori_len;
int index_new=new_len;
while(index_ori>=0&&index_new>index_ori){
if(str[index_ori]==' '){
str[index_new--]='0';
str[index_new--]='2';
str[index_new--]='%';
}
else {
str[index_new--]=str[index_ori];
}
--index_ori;
}
}
};
4、相关知识点
C语言下字符串操作,统计字符串长度可以用数组形式,也可以使用指针形式,使用指针形式需要主要的一个问题是,如果指针是const需要用另外一个指针来统计。