题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution {
public String replaceSpace(StringBuffer str) {
int oldLength = str.length();
int newLength = (addLength(str)*2) + oldLength;
//在原大小上扩容2*空格数
str.setLength(newLength);
for(int i=oldLength-1, j=newLength-1; i >= 0; i--, j--){
if(str.charAt(i)==' '){
str.setCharAt(j-2, '%');
str.setCharAt(j-1,'2');
str.setCharAt(j, '0');
j=j-2;
}else{
str.setCharAt(j, str.charAt(i));
}
}
return str.toString();
}
private int addLength(StringBuffer str){
int countSpace = 0;
for(int i=0; i < str.length(); i++){
if(str.charAt(i)==' '){
countSpace++;
}
}
return countSpace;
}
}
ps:
- StringBuffer 扩容 str.setLength(扩容大小)
- 从后往前替换,时间复杂度为O(n);