题目
思路
- 首先从左往右计算空格的数量
- 反向替换空格,因为正向替换,需要大量的移动
代码
public String replaceSpace(StringBuffer str) {
int spaceNum=0;
int newLength=0;
int oldIndex;
for(int i=0;i<str.length();i++){
if(str.charAt(i)==' '){
spaceNum++;
}
}
newLength=str.length()+spaceNum*2;
oldIndex=str.length()-1;
str.setLength(newLength);
while(oldIndex>=0&&oldIndex<newLength)
{
if (str.charAt(oldIndex)==' '){
str.setCharAt(--newLength,'0');
str.setCharAt(--newLength,'2');
str.setCharAt(--newLength,'%');
}
else {
str.setCharAt(--newLength,str.charAt(oldIndex));
}
oldIndex--;
}
return str.toString();
}
通过