替换空格:实现一个函数,把字符串中的每个空格替换成“%20”。栗子:输入“We are happy”,则输出“We%20are%20happy.”。
程序:
void RepalceBlank(char string[],int lenth)
{
if(string==nullptr||lenth<=0)
return;
int originalLenth=0;
int numberOfBlank=0;
int i=0;
while(string[i]!='\0')
{
++originalLenth;
if(string[i]=='')
++numberOfBlank;
++i;
}
int newLenth=originalLenth+numberOfBlank*2;
if (newLenth>originalLenth)
return;
int indexOfOriginal=originalLenth;
int indexOfNew=newLenth;
while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal)
{
if(string[indexOfOriginal]=='')
{
string[indexOfNew--]='0';
string[indexOfNew--]='2';
string[indexOfNew--]='%';
}
else
{
string[indexOfNew--]=string[indexOfOriginal];
}
--indexOfOriginal;
}
}
可画出示意图来表示清楚意图。
相似题目:有两个排序的数组A1和A2,内存 在A1的末尾有足够的空余空间容纳A2。请实现一个函数,把A2中的所有数字插入A1中,并且所有额数字是排序的。
在合并的两个数组的时候,很多人首先想到是在A1 中从头到尾复制数字,但这样就会出现多次复制一个数字的情况。更好的办法是从头到尾比较A1和A2中的数字,并把较大的数字复制到A1中的合适的位置。