请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
输入: s = "We are happy."
输出: "We%20are%20happy."
解法1:
用字符数组,新建一个长度为字符串长度3倍的字符数组,遍历原字符串,当遍历到字符是空格时,在新数组将当前字符设置为'%',下一个字符为'2',在下一个为'0',否则当前字符直接设置到新数组,最后用字符数组新建一个字符串。
public String replaceSpace(String s) {
char[] chars = new char[s.length() * 3];
int size = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' ') {
chars[size] = '%';
chars[size+1] = '2';
chars[size+2] = '0';
size += 3;
} else {
chars[size] = s.charAt(i);
size++;
}
}
String str = new String(chars, 0 ,size);
return str;
}
}
常见错误
public String replaceSpace(String s) {
char[] chars = new char[s.length() * 3];
int size = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' ') {
chars[i] = '%';
chars[i+1] = '2';
chars[i+2] = '0';
size += 3;
} else {
chars[i] = s.charAt(i);
size++;
}
}
String str = new String(chars, 0 ,size);
return str;
}
}
错误的将i作为新数组的下标,将i,i+1,i+2设置完之后,下次遍历时,又将i+1,i+2覆盖为下一个字符,应该新建一个size作为新数组的下标。
错误输出:
输入
"We are happy."
输出
"We%are%happy.\u0000\u0000\u0000\u0000"\
预期结果
"We%20are%20happy."