Write a method to replace all spaces in a string with'%20'
算法:
1,计算出一个字符串里有多少个空格。(为方便计算出新字符串的长度)
2,从后往前遍历一遍这个字符串,如果遇到空格,就存储‘%20’,如果不是空格,就把原来的字符存到新的位置上去。
(我们只可以往后移,空格与‘%20’之间差两位,所以新的长度应该是就旧长度加上空格*2)
#include<iostream>
using namespace std;
void main()
{
char str[]={"aber reba erab"};
int length=15;
for(int i=0;i<length;i++)
cout<<str[i];
int spacecount=0,newlength,i=0;
for(i=0;i<length;i++)
{
if(str[i]==' ')
spacecount++;//find how many space in this string
}
newlength=length+spacecount*2;//calculate the new string length
int newlength1=newlength;
str[newlength]='\0';//new string also ending with'\0'
for(i=length-1;i>=0;i--)
{
if(str[i]==' ')//if we face space
{
str[newlength-1]='0';
str[newlength-2]='2';
str[newlength-3]='%';
newlength=newlength-3;
}
else//if we do not face space
{
str[newlength-1]=str[i];//copy from back to the front
newlength=newlength-1;
}
}
for(int i=0;i<newlength1;i++)
cout<<str[i];
}