面试题 5:替换空格
题目描述
请实现一个函数,把字符串中的每个空格替换成 "%20"
。例如,当字符串为 We Are Happy.
,则经过替换之后的字符串为 We%20Are%20Happy.
。
方法一:使用 replace()
public String replaceSpace(StringBuffer str) {
if(str==null || str.length()==0)
return str.toString();
for(int i = 0; i < str.length(); ++i){
if(str.charAt(i)==' '){
str.replace(i,i+1,"%20");
}
}
return str.toString();
}
方法二:使用 append()
public String replaceSpace(StringBuffer str) {
if(str==null || str.length()==0)
return str.toString();
char[] s = str.toString().toCharArray();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length; ++i){
if(s[i]==' '){
sb.append("%20");
}else{
sb.append(s[i]);
}
}
return sb.toString();
}
方法三:使用双指针
public String replaceSpaces(StringBuffer str) {
if (str == null || str.length() == 0)
return str.toString();
int P1 = str.length() - 1;
for (int i = 0; i <= P1; i++)
if (str.charAt(i) == ' ')
str.append(' ');
int P2 = str.length() - 1;
while (P1 >= 0 && P2 > P1) {
char c = str.charAt(P1--);
if (c == ' ') {
str.setCharAt(P2--, '0');
str.setCharAt(P2--, '2');
str.setCharAt(P2--, '%');
} else {
str.setCharAt(P2--, c);
}
}
return str.toString();
}