题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路:首先查找空格的个数,由此算出新的字符串的空间,然后最最后开始替换,当两个指针相等时说明空格以及替换完了。
#include<iostream>
using namespace std;
class Solution {
public:
void replaceSpace(char *str, int length) {
//首先统计空格数量
int len = strlen(str);
int count = 0;
int i = 0;
while(i<len&&str[i] != '\0')
{
if (str[i] == ' ')
++count;
++i;
}
if (count == 0) return;
char *p1 = str + len ;
char *p2 = p1 + count * 2;
while (p1 != p2)
{
if (*p1 == ' ')
{
--p1;
*p2-- = '0';
*p2-- = '2';
*p2-- = '%';
}
else
{
*p2-- = *p1--;
}
}
return;
}
};
int main()
{
const int length = 100;
char str[length] = "We Are Happy";
Solution sol;
sol.replaceSpace(str, length);
for (int i = 0; str[i] != '\0'; ++i)
{
cout << str[i];
}
cout << endl;
}