- 要求:
写算法将字符串中的空格用%20替换。 - 若开个新数组记录答案,再简单不过。
- 不开新数组,先求出最后答案的长度,然后从后往前依次赋值,这样无后效性,后面覆盖掉的都是已经无用的信息。
- 代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int NN=100100;
int n;
char s[NN];
int main(){
int n=0;
char c;
while((c=getchar())!='\n')s[++n]=c;
int l=n,r=n;
for(int i=1;i<=n;i++){
if(s[i]==' ')r+=2;
}
for(;l>=1;l--){
if(s[l]==' '){
s[r--]='0';
s[r--]='2';
s[r--]='%';
}
else{
s[r--]=s[l];
}
}
printf("%s\n",s+1);
return 0;
}
结果: