要求:空间复杂度位O(n),时间复杂度位O(n)
#include<stdio.h>
#include<stdlib.h>
void Replace(char arr[],int k)
{
int i = 0;
char tmp;
printf("%s\n", arr);
int p = k-1;
int q = k-1;
int count = 0;
while (arr[i])
{
if (arr[i] == ' ')
{
count++;
}
i++;
}
p = count*2 +p;
for (q=k-1; q >= 0; q--)
{
if (arr[q] != ' ')
{
tmp = arr[q];
arr[q] = arr[p];
arr[p] = tmp;
p--;
}
else if (arr[q] == ' ')
{
arr[p] = '0';
p--;
arr[p] = '2';
p--;
arr[p] = '%';
p--;
}
if (p == q)
{
break;
}
}
printf("%s\n", arr);
}
int main()
{
char arr[50] = "abc de f lj h";
Replace(arr,strlen(arr));
system("pause");
return 0;
}