本题难点主要是char和String类型转换不太熟练,由于 ‘ ’ 需要转成 ‘%20’ 扩充了三倍,因此假设一个char数组为原字符串的三倍长,用size为索引标记最后一位的位置,最后返回新字符串String,以size为字符串长度。
法一:
class Solution {
public String replaceSpace(String s) {
char[] res = new char[3*s.length()];
int size = 0;
for (int i = 0; i < s.length(); i ++) {
char c = s.charAt(i);
if (c == ' ') {
res[size++] = '%';
res[size++] = '2';
res[size++] = '0';
}else {
res[size++] = c;
}
}
String newString = new String(res, 0 ,size);
return newString;
}
}
法二:利用StringBuilder可以在字符串中直接加上'%20',最后再把StringBuilder转为String返回
class Solution {
public String replaceSpace(String s) {
StringBuilder res = new StringBuilder();
for(Character c : s.toCharArray())
{
if(c == ' ') res.append("%20");
else res.append(c);
}
return res.toString();
}
}