剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

双指针
先将字符串扩容,加上空格数量2倍的字符。为了避免字符被覆盖,两个指针从后往前走。指针i指向原来字符串的结尾,指针j指向扩容后的字符串结尾。

class Solution {
    public String replaceSpace(String s) {
        int len1 = s.length();
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < len1; i++) if(s.charAt(i) == ' ') sb.append("  ");
        s = s + sb.toString();
        int len2 = s.length();
        char[] ch = s.toCharArray();

        for(int i = len1 - 1, j = len2 - 1; i >= 0; i--){
            if(ch[i] != ' ') ch[j--] = ch[i];
            else{
                ch[j--] = '0';
                ch[j--] = '2';
                ch[j--] = '%';
            }
        }

        return new String(ch);
    }
}

你可能感兴趣的:(#,剑指offer,算法)