比如使用%20代替源字符串中空格
要求O(1)的空间复杂度,所以考虑从后往前移动源字符串
#include <iostream>
#include <string>
using namespace std;
void InsertStrintWithWords(char a[100],int len)
{
//%20
int i=0;
int spaceNumber=0;
for(i=0;i<=len;i++)
{
if(a[i]==' ')
spaceNumber++;
}
int end=len+2*spaceNumber;
for(i=len;i>=0;i--)
{
if(a[i]!=' ')
a[end--]=a[i];
else
{
a[end--]='0';
a[end--]='2';
a[end--]='%';
}
}
end=len+2*spaceNumber;
for(int i=0;i<=end;i++)
{
cout<<a[i]<<" ";
}
}
int main()
{
char a[100]={"a b c"};
InsertStrintWithWords(a,6);
return 0;
}
本文介绍了一种将字符串中的空格替换为%20的算法,并通过一个具体的C++实现示例来展示如何在O(1)的空间复杂度下完成这一任务。该算法特别适用于Web页面中的URL编码场景。
3648

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



