題目描述
請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
思路:
1.題目是將空格替換成%20,也就是把1個字符替換成3個字符,那每個空格後面的字符都要向後移,否則就會覆蓋之前的字符
2.如果從前往後找空格,那每找到一個,就要移動後面是字符,時間複雜度爲O(N^2)
3.不妨從後向前找,先統計出空格的個數,再從後開始移動,這樣時間複雜度就是O(1)
- 代碼如下(前提是字符串後面有足夠的空間)
void replaceSpace(char *str,int length) {
int count=0;
for(int i=0;i<length;i++)
{
if(str[i]==' ') count++;//統計個數
}
for(int i=length-1;i>=0;i--)
{
if(str[i]!=' ')
str[i+2*count]=str[i];
else
{
str[i+2*count]='0';
str[i+2*count-1]='2';
str[i+2*count-2]='%';
count--;
}
}