为什么要从后向前填充,从前向后填充不行么?
从前向后填充就是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);}
