題目:請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
分析:先統計空格個數,然後計算將所有空格替換成"%20"時的尾下標,然後將原數據從尾->頭進行拷貝,如果是空格,就拷貝三個字符,'0'、'2'、'%',否則是普通字符就原樣拷貝,直到原字符到頭。
void replaceSpace(char *str, int length) {
int count = 0;
char* s1 = str;
//計算空格個數
while (*s1 != '\0')
{
if(*s1==' ')
count++;
s1++;
}
int end=length-1;//原尾下標
int new_length=length+2*count;
int new_end=new_length-1;//新尾下標
while(end>=0)
{
if(str[end]==' ')
{
str[new_end--]='0';
str[new_end--]='2';
str[new_end--]='%';
end--;
}
else
{
str[new_end--]=str[end--];
}
}
}