题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路分析
- 最简单的是调用Java的str.toString().replaceAll()
- 也可以用Java的split + concat,根据空格分隔,再在每一部分字符串后面加上“%20”
- 从后往前替换,先计算需要多少空间,然后从后往前移动,则每个字符只移动一次,这样效率更高一点。
代码实现
public String replaceSpace(StringBuffer str) {
int spaceNum=0;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)==' '){
spaceNum++;
}
}
int indexOld=str.length()-1;
int lengthNew=str.length()+spaceNum*2;
int indexNew =lengthNew-1;
str.setLength(lengthNew);
while (indexOld>=0 && indexOld<lengthNew){
if(str.charAt(indexOld)==' '){
str.setCharAt(indexNew--,'0');
str.setCharAt(indexNew--,'2');
str.setCharAt(indexNew--,'%');
}else {
str.setCharAt(indexNew--,str.charAt(indexOld));
}
indexOld--;
}
return str.toString();
}