class Solution {
public String replaceSpace(String s) {
// 将字符串转换为字符数组
char[] str = s.toCharArray();
// 统计字符串中包含的空格数
int count = 0;
for (char c : str) {
if (c == ' ') {
count++;
}
}
// 创建一个新的字符数组,长度为原字符数组的长度加上空格数乘以 2
//注意并不是 3
char[] res = new char[str.length + count * 2];
// 对原字符数组进行遍历和修改
count = 0;
for (char c :str) {
if (c == ' ') {
// 如果当前字符是空格,将 "%20" 替换为空格
res[count++] = '%';
res[count++] = '2';
res[count++] = '0';
} else {
// 如果当前字符不是空格,直接将其复制到新的字符数组中
res[count++] = c;
}
}
// 将新字符数组转化为字符串并返回
return new String(res);
}
}
这里使用了 StringBuilder 类来构建新的字符串,避免了对原数组进行修改,也提高了效率。同时,使用了 sb.append()
方法来向 StringBuilder 中添加字符,避免了重复的计数操作。
class Solution {
public String replaceSpace(String s) {
if (s == null) {
return null;
}
// 创建一个 StringBuilder 对象
StringBuilder sb = new StringBuilder();
// 遍历字符串 s 中的每一个字符
for (char c : s.toCharArray()) {
// 如果该字符是空格,将 "%20" 添加到 StringBuilder 对象中
if (c == ' ') {
sb.append("%20");
} else {
// 如果该字符不是空格,将该字符添加到 StringBuilder 对象中
sb.append(c);
}
}
// 将 StringBuilder 对象转换为字符串并返回
return sb.toString();
}
}