public class Solution {
public String replaceSpace(StringBuffer str) {
int numSpace = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ‘ ‘)
numSpace++; //计算空格的个数
}
int indexOld = str.length() - 1; //原始字符串最后一个字符的下标
int newLength = str.length() + 2 * numSpace; //新字符串长度,每遇到空格,长度加2(空格=> )
int indexNew = newLength - 1; //新字符串最后一个字符的下标
str.setLength(newLength); //一定记住要扩大str的长度
for (; indexOld >= 0; indexOld--) { //从后往前扫描
if (str.charAt(indexOld) == ‘ ‘) {
str.setCharAt(indexNew--, ‘0‘);
str.setCharAt(indexNew--, ‘2‘);
str.setCharAt(indexNew--, ‘%‘);
numSpace--;
if (numSpace == 0) { //说明空格都没了,前面的字符就不用动了
break;
}
} else
str.setCharAt(indexNew--, str.charAt(indexOld));
}
return str.toString();
}
}