题目:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路: 常见的从后往前开始复制和替换,
public class Solution {
public String replaceSpace(StringBuffer str) {
int count = 0;
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) == ' '){
count++;
}
}
String s = new String(str);
int len = s.length() - 1;
char[] c = new char[s.length() + count * 2];
for(int i = c.length -1 ; i >= 0; ){
if(s.charAt(len) == ' '){
c[i --] = '0';
c[i --] = '2';
c[i --] = '%';
--len;
}else {
c[i--] = s.charAt(len--);
}
}
return String.valueOf(c);
}
public String replaceSpace(StringBuffer str) {
StringBuffer sb = new StringBuffer();
for(int i = 0; i < str.toString().length(); i ++){
if(String.valueOf(str.charAt(i)).equals(" ")){
sb.append("%20");
}else {
sb.append(String.valueOf(str.charAt(i)));
}
}
return sb.toString();
}
}
public String replaceSpace(StringBuffer str) {
return str.toString().replaceAll(" ","%20");
}
}
本题注意点:
在代码实现过程中,存在不足,题目给的参数是StringBuffer,我是先转成String,在创建char数组再对其操作。
- char[ ] 转String,String.valueOf(char[] x), 而不是x.toString,这个是打印出地址。
- String与StringBuffer相互转换