题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
代码实现
public class Solution {
public String replaceSpace(StringBuffer str) {
//先计算空格的数量
int blankNum = 0;
int len1 = str.length();
for(int i = 0;i < len1;i++){
if(str.charAt(i) == ' ')
blankNum++;
}
//扩充str的长度
int len2 = len1 + blankNum * 2;
str.setLength(len2);
//从后往前替换
for(int i = len1-1,j = len2-1;i >= 0;i--){
if(str.charAt(i) == ' '){
str.setCharAt(j--,'0');
str.setCharAt(j--,'2');
str.setCharAt(j--,'%');
if(--blankNum == 0) break;
}else{
str.setCharAt(j--,str.charAt(i));
}
}
return str.toString();
}
}
主要思路
1、从后向前移动,每个元素最多移动一次
2、主要记住几个api:length(),setLength(),charAt(i),setCharAt(i,'0')
3、代码优化:if(--blankNum == 0) break;