面试题 01.03. URL化

解题一: 先计算长度,然后再遍历
class Solution {
public String replaceSpaces(String S, int length) {
int ln = 0;
for (int i = 0; i < length; i++) {
if (S.charAt(i) == ' ') {
ln += 3;
} else {
ln ++;
}
}
char[] c = new char[ln];
int j = 0;
for (int i = 0; i < length; i++) {
if (S.charAt(i) == ' ') {
c[j++] = '%';
c[j++] = '2';
c[j++] = '0';
} else {
c[j++] = S.charAt(i);
}
}
return new String(c);
}
}

//runtime:16 ms
//memory:45.8 MB

解题二
class Solution {
public String replaceSpaces(String S, int length) {
return S.substring(0, length).replace(" ", "%20");
}
}

//runtime:11 ms
//memory:47.1 MB
解题三
class Solution {
public String replaceSpaces(String S, int length) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
if (S.charAt(i) == ' ') {
sb.append("%20");
} else {
sb.append(S.charAt(i));
}
}
return sb.toString();
}
}

//runtime:19 ms
//memory:46.1 MB