题目及解题思路见链接:
https://blog.csdn.net/l_xrui/article/details/51685552
代码如下:
#include <iostream>
using namespace std;
void ReplaceBlanks(char string[], int length)
{
if(string==NULL||length<=0)
return;
int originallength=0;
int numofBlanks=0;
int i=0;
while(string[i]!='\0')
{
++originallength;
if(string[i]==' ')
++numofBlanks;
++i;
}
int newlength=originallength+2*numofBlanks;
if(newlength>length)
return ;
int IndexofOriginal=originallength;
int IndexofNew=newlength;
while(IndexofOriginal>=0&&IndexofNew>IndexofOriginal)
{
if(string[IndexofOriginal]==' ')
{
string[IndexofNew--]='0';
string[IndexofNew--]='2';
string[IndexofNew--]='%';
}
else
{
string[IndexofNew--]=string[IndexofOriginal];
}
--IndexofOriginal;
}
}
int main()
{
char mystring[]="Are You Happy ?";
ReplaceBlanks(mystring, 1000);
cout << mystring << endl;
return 0;
}
本文介绍了一种将字符串中的空格替换为'%20'的算法实现。通过计算原字符串中空格的数量并预留足够的空间来存放替换后的字符,该算法能够在原地完成替换操作。文章提供了完整的C++代码示例,并展示了如何调用该函数。

460

被折叠的 条评论
为什么被折叠?



