URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)
示例1:
输入:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"
示例2:
输入:" ", 5
输出:"%20%20%20%20%20"
提示:
字符串长度在[0, 500000]范围内。
1、赋值给另外一个数组
空间复杂度有点高
char* replaceSpaces(char* S, int length){
char* a = (char*)malloc(length*3+1);
int j=0;
for(int i=0;i<length;i++){
if(S[i]==' '){
a[j++]='%';
a[j++]='2';;
a[j++]='0';
continue;
}
a[j++]=S[i];
}
a[j]='\0';
return a;
}
2、原地修改(反向赋值)
如果遇到空格就循环推值,时间复杂度会过高
char* replaceSpaces(char* S, int length){
int s_num = 0;
for(int i = 0; i < length ; i++) {
if(S[i] == ' '){
s_num ++;
}
}
int last_idx = length + s_num * 2 - 1;
S[last_idx+1] = '\0';
for(i = length - 1; i >= 0; i--) {
if(S[i] == ' ') {
S[last_idx--] = '0';
S[last_idx--] = '2';
S[last_idx--] = '%';
}
else
S[last_idx--] = S[i];
}
return S;
}