法一
直接 replace 将空格替换
关键:replace
https://www.yiibai.com/java/l…
public class Solution {public String replaceSpace(StringBuffer str) {String string = str.toString();
String str2 = string.replaceAll("","%20");
return str2;
}
}
法二
用 setlength 方法,先设置 StringBuffer 长度
public class Solution {public String replaceSpace(StringBuffer str) {
int p1,p2;
int n = 0;
for (int i = 0; i < str.length(); i++)
if(str.charAt(i) == ' ')
n++;
p1 = str.length() - 1;
p2 = str.length() - 1 + n*2;
str.setLength(str.length() + n*2);
while(p1 < p2 && p1 >= 0){if(str.charAt(p1) != ' ') {str.replace(p2, p2+1, String.valueOf(str.charAt(p1)));
p2--;
}
else {str.replace(p2-2,p2+1,"%20");
p2 = p2 - 3;
}
p1--;
}
return str.toString();}
}
法三
新建一个数组,直接遍历,遇到空格就替换