为什么要从后向前填充,从前向后填充不行么?
    从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素向后移动。
    思路:现根据空格扩容,在从后向前填充空格代表的%20。

    1. public String replaceSpace(String s) {
    2. if (s == null && s.length() == 0) {
    3. return null;
    4. }
    5. StringBuilder stringBuilder = new StringBuilder();
    6. for (int i = 0; i < s.length(); i++) {
    7. if (s.charAt(i) == ' ') {
    8. stringBuilder.append(" ");
    9. }
    10. }
    11. int i = s.length() - 1;
    12. s += stringBuilder;
    13. int j = s.length() - 1;
    14. char[] array = s.toCharArray();
    15. for (; i >= 0; i--, j--) {
    16. if (array[i] == ' ') {
    17. array[j--] = '0';
    18. array[j--] = '2';
    19. array[j] = '%';
    20. } else {
    21. array[j] = array[i];
    22. }
    23. }
    24. return new String(array);
    25. }