A8站源码交易平台 标题:
完成一个函数,把字符串的每个空格替换成"%20".例如把"We are happy,"输出为
"We%20are%20happy"
解法一:正向扫描字符串,遇到空格就填入"%20",因为要移动空格后边的字符串,假定字符串的 长度为n,则时刻复杂度是n*n
解法二:
逆向扫描数组去仿制,时刻复杂度到达O(n)。因而开的数组要足够大,因为一个空格替换后比本来多两个字符,所以新的长度比本来长 2*(空格数量)
执行进程如下图:
void ReplaceBlank(char string[], int length)//字符串和字符数组预订操作空间
{
if(string == nullptr || length <= 0)
return ;
int numBlank = 0;//空格数目
int numChar = 0;//字符数目
for(int i = 0; string[i] != '�'; i++)
{
if(string[i] == ' ')
numBlank++;
else
numChar++;
}
numChar++;//加上'�'这个结束字符
//cout<<numchar<<endl;
//system("pause");
int orginalLength = numBlank + numChar;//本来长度
int newLength = numBlank*2 + orginalLength;//替换后的长度
//cout<<orginallength<<" br="" span="" style="font-size: 16px; font-family: Verdana;" newlength="" return="" int="" p1="" -="3;</span" p2="" p="" a="" target="_blank" href="https://www.a8zhan.com/" data-ke-src="https://www.a8zhan.com">