为什么要从后向前填充,从前向后填充不行么?
从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素向后移动。
思路:现根据空格扩容,在从后向前填充空格代表的%20。
public String replaceSpace(String s) {
if (s == null && s.length() == 0) {
return null;
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == ' ') {
stringBuilder.append(" ");
}
}
int i = s.length() - 1;
s += stringBuilder;
int j = s.length() - 1;
char[] array = s.toCharArray();
for (; i >= 0; i--, j--) {
if (array[i] == ' ') {
array[j--] = '0';
array[j--] = '2';
array[j] = '%';
} else {
array[j] = array[i];
}
}
return new String(array);
}