#include<iostream>
using namespace std;
void ReplaceBlank(char str[], int length)
{
if(str==NULL || length <= 0)
{
return;
}
int originalLength = 0;
int numberOfBlank = 0;
int i = 0;
while(str[i]!='\0')
{
++originalLength;
if(str[i]==' ')
{
++numberOfBlank;
}
++i;
}
int newLength = originalLength + numberOfBlank * 2;
if(newLength > length)
{
return;
}
int indexOfOriginal = originalLength;
int indexOfNew = newLength;
while(indexOfOriginal>=0 && indexOfNew > indexOfOriginal)
{
if(str[indexOfOriginal]==' ')
{
str[indexOfNew--]='0';
str[indexOfNew--]='2';
str[indexOfNew--]='%';
}
else{
str[indexOfNew--] = str[indexOfOriginal];
}
--indexOfOriginal;
}
}
int main()
{
char source[100] = {"we are happy."};
cout << "Before replacing balank: " << source << endl;
ReplaceBlank(source,100);
cout << "After replacing balank: " << source << endl;
}
字符串替换算法
本文介绍了一个字符串处理算法,该算法能够将输入字符串中的空格字符替换成%20,且整个替换过程是在原字符串上进行操作,不需要额外的空间。文章通过一个具体的C++实现示例详细解释了这一算法的工作原理。
172万+

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



