您的位置:首页 > 编程语言 > C语言/C++

字符串空格替换

2017-04-16 22:58 239 查看
题目描述:

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

分析:

一开始写了好久就是不对。。。原因是字符数组传递参数不太熟,还把\0写成了\n,并且length理解错了

思路:从后往前,这样移动的次数少,先扫描一遍计算空格的数量,再从后往前扫描一遍替换

代码:

class Solution {
public:
void replaceSpace(char *str, int length) {
if (str == NULL || length == 0)
return;
int cntSpace = 0;//空格的数量
int cntOld = 0;//原来的长度
int cntNew = 0;//扩充之后的长度
for (int i = 0; str[i] != '\0'; i++){
if (str[i] == ' ')
++cntSpace;
++cntOld;
}
cntNew = cntOld + 2 * cntSpace;
if (cntNew + 1>length)
return;
int j = cntOld + 2 * cntSpace;//,没有-1,把\0考虑在内
for (int i = cntOld; i >= 0; i--){
if (str[i] == ' '){
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
}
else{
str[j] = str[i];
--j;
}
}
}
}p;
int main()
{
//char *a = new char[10];
char a[10] = " ";
p.replaceSpace(a,10);
cout << a << endl;
system("pause");
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  剑指offer C++