请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解析:三种方法:
①函数:str.toString().replace(oldChar,newChar);
②新建一个String,遇到空格换成%20;
③扩充原String,从后往前移位、替换
代码:
public class Solution {
public String replaceSpace(StringBuffer str) {
//方法①
//return str.toString().replace(" ", "%20");
//方法②
/*StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length(); i++){
char temp = str.charAt(i);
if(temp == ' '){
sb.append("%20");
}else{
sb.append(temp);
}
}
return sb.toString();
*/
//方法③
//计算字符串中有多少个空格
int count = 0;
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) == ' ')
count++;
}
int oldLength = str.length();
int oldIndex = str.length() - 1;
//因为%20占三个字符,一个空格占一个字符
int newLength = str.length() + 2 * count;
int newIndex = newLength -1;
str.setLength(newLength);
for(; oldIndex >= 0 && oldLength > 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();
}
}