题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
String的replaceAll方法
public String replaceSpace(StringBuffer str) {
return str.toString().replaceAll(" ", "%20");
}
StringBuffer的append方法
public static String replaceSpace(StringBuffer str) {
StringBuffer sb = new StringBuffer();
for(int i=0;i<str.length();i++){
if(str.charAt(i)==' '){
sb.append("%20");
}else{
sb.append(str.charAt(i));
}
}
return sb.toString();
}
先计算出扩充后的新长度
先计算出扩充后的新长度,然后从尾到头逐个添加,如果是空格,就直接添加3个字符,如果不是,就正常添加:
public static String replaceSpace(StringBuffer str) {
int count=0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)==' '){
count++;
}
}
int oldIndex=str.length()-1;
int newIndex=str.length()+2*count-1;
str.setLength(newIndex+1);
for(;oldIndex>=0;--oldIndex){
if(str.charAt(oldIndex)==' '){
str.setCharAt(newIndex--, '0');
str.setCharAt(newIndex--, '2');
str.setCharAt(newIndex--, '%');
}else{
str.setCharAt(newIndex--,str.charAt(oldIndex));
}
}
return str.toString();
}