一、
二、
三、代码实现
public static void ReplaceBlank(char[] target, int maxLength){
if(target == null || maxLength <= 0){
return;
}
// originalLength 为字符串target的实际长度
int originalLength = 0;
int blankCount = 0;
int i = 0;
while (target[i] != '\0'){
originalLength ++;
// 计算空格数量
if(target[i] == ' '){
blankCount ++;
}
i++;
}
// newLength 为把空格替换成'%20'之后的长度
int newLength = originalLength + blankCount * 2;
if(newLength > maxLength) {
return;
}
// 设置两个指针,一个指向原始字符串的末尾,另一个指向替换之后的字符串的末尾
int indexOfOriginal = originalLength;
int indexOfNew = newLength;
while (indexOfOriginal >= 0 && indexOfNew >=0){
if(target[indexOfOriginal] == ' '){
target[indexOfNew --] = '0';
target[indexOfNew --] = '2';
target[indexOfNew --] = '%';
}else{
target[indexOfNew] = target[indexOfOriginal];
}
indexOfOriginal --;
}
}