先統計空格數目,然後從後往前處理 時間複雜度O(n)
//將給定字符串中的空格替換成%20
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int Max_Size = 500;
char str[Max_Size];
int main()
{
while(cin.getline(str,Max_Size))
{
int count = 0,i = 0,j = 0,size = strlen(str);
while( i < size)
{
if(str[i] == ' ')
count++;
++i;
}
i = size + 2 * count -1;
j = size - 1;
while(i >= 0 && j >= 0)
{
if(str[j] != ' ')
{
str[i] = str[j];
--i;
--j;
}
else
{
str[i] = '0';
str[i-1] = '2';
str[i - 2] = '%';
--j;
i -= 3;
}
}
cout<<str<<endl;
}
}