试题:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
代码:
public class Solution {
public String replaceSpace(StringBuffer str) {
StringBuffer res = new StringBuffer();
for(int i=0; i<str.toString().length(); i++){
char s = str.charAt(i);
if(s == ' '){
res.append("%20");
}else{
res.append(s);
}
}
return res.toString();
}
}
利用原有的str buffer,重置长度后,从后往前遍历插入:
public class Solution {
public String replaceSpace(StringBuffer str) {
int originalLength = str.length()-1;
int numberOfBlank = 0;
//int i = 0;
for(char c : str.toString().toCharArray()){
if (c == ' '){
numberOfBlank++;
}
}
int newLength = originalLength + numberOfBlank*2+1;
str.setLength(newLength);
newLength = newLength-1;
while (originalLength >= 0 && newLength > originalLength){
if (str.charAt(originalLength) == ' '){
str.setCharAt(newLength--,'0');
str.setCharAt(newLength--,'2');
str.setCharAt(newLength--,'%');
}else{
str.setCharAt(newLength--,str.charAt(originalLength));
}
originalLength--;
}
return str.toString();
}
}