题目
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
题解
- 使用库函数replace
return s.replace(" ","%20");
- 使用StringBuilder,比StringBuffer更快
public String replaceSpace(String s) {
if("".equals(s)) return s;
StringBuilder sb = new StringBuilder();
for(char ch : s.toCharArray()) {
if (ch == ' ') {
sb.append("%20");
} else {
sb.append(ch);
}
}
return sb.toString();
}
- 双指针,先转换为数组扩容,从后往前移动
public String replaceSpace(String s) {
char[] ch = s.toCharArray();
int count = 0;
for (int i = 0; i < ch.length; i++) {
if (ch[i] == ' ') {
count++;
}
}
int len = ch.length + count * 2;
char[] tmp = new char[len];
int j = len - 1, i = ch.length - 1;
while (i >= 0) {
if (ch[i] == ' ') {
tmp[j--] = '0';
tmp[j--] = '2';
tmp[j--] = '%';
i--;
} else {
tmp[j--] = ch[i--];
}
}
return new String(tmp);
}