题目
请实现一个函数,把字符串中的每个空格替换成"%20"。
你可以假定输入字符串的长度最大是1000。
注意输出字符串的长度可能大于1000。
样例
输入:“We are happy.”
输出:“We%20are%20happy.”
class Solution {
//双指针 时间复杂福O(n),不开辟新的空间,在原来的字符串上进行操作,空间复杂度较低
public static String replaceSpace3(StringBuffer str){
int spaceNum = 0;
//统计空格数量
int length = str.length();
for(int i = 0; i < length; i++){
if(str.charAt(i) == ' '){
spaceNum++;
}
}
//新字符串长度
int newLength = spaceNum * 2 + length;
//字符串扩容
str.setLength(newLength);
//原来字符串最后一个
int indexOld = length - 1;
//新字符串最后一个
int indexNew = newLength - 1;
for (;indexOld >= 0 && spaceNum > 0;indexOld--){
if (str.charAt(indexOld) == ' '){
str.setCharAt(indexNew--,'0');
str.setCharAt(indexNew--,'2');
str.setCharAt(indexNew--,'%');
spaceNum--;//空格没了就不在进行
}else{
str.setCharAt(indexNew--,str.charAt(indexOld));
}
}
return str.toString();
}
}