标签:
替换空格
题目:把字符串中的每个空格替换“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”
思路:从字符串后面开始复制和替换,首先准备两个指针p1和p2,p1指向原始字符串的末尾,p2指向替换之后的字符串的末尾。逐个移动p1,如果没有遇到空格,逐个把它指向的字符复制到p2。如果遇到空格,p1向前移动一格,p2之前插入字符串“%20”,同时将p2向前移动3格。依次重复,直到p1和p2指向同一个位置,表明所有空格都已经替换完毕。
核心代码:
void ReplaceBlank(char string[],int length)
{
if (string=NULL||length<=0)
return;
int originallength=0;
int numberofBlank=0;
int i=0;
while(string[i]!=‘\0‘)
{
++originallength;
if(string[i]==‘ ‘)
++numberofBlank;
++i;
}
int newlength=originallength+2*numberofBlank;
if(newlength>length)
return;
int indexoriginal=originallength;
int indexnew=newlength;
while(indexoriginal>=0&&indexoriginal<indexnew)
{
if(string[indexoriginal]=‘ ‘])
{
string[indexnew--])=‘%‘;
string[indexnew--])=‘0‘;
string[indexnew--])=‘2‘;
string[indexnew--])=‘%‘;
}
else
{
string[indexnew--]=string[indexoriginal];
}
--indexoriginal;
}
标签:
原文地址:http://www.cnblogs.com/xixi1992/p/4314172.html