面试题 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