请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
day 2 由于论文修改,耽搁了几天。
题目:替换空格,1 计算空格数,这里length是系统给的长度。
2 注意边界条件,两个指针,一个指向原始字符串的结尾,一个指向扩充数组的末尾
3 循环直到数组开头,若遇到空格,添加元素%20,否则复制原数组的值。
4 结束。注意两个指针的取值。
2017 6-11, 周一
class Solution {
public:
void replaceSpace(char *str,int length) {
//2017-6-7 周三 23:00
//遍历字符,找空格数目m。
//扩充数组length+m*2
//1 判断地址非法不。
if(str==NULL||length<=0) return;
// 可以无值返回
// char *p=str;
int oldnum=0;
int cnt=0;
int i=0;
//遍历找空格
while(str[i]!='\0')
{
if(str[i]==' ') cnt++;
oldnum++;
i++;
}
//扩充数组长度
//用什么函数控制,malloc还是new.
int newlen;
newlen=oldnum+cnt*2;
//双指针beg end;//指针不能向前移动怎搞。
//指针是数字讶
//beg的位置
int beg=oldnum;
int end=newlen;
if(newlen>length) return;
while(beg>=0&&oldnum<newlen)
{
//遇到空格
if (str[beg]==' ')
{
str[end--]='0';
str[end--]='2';
str[end--]='%';
}
else
str[end--]=str[beg];
beg--;
}
}
};