替换空格 剑指Offer

题目

替换空格 剑指Offer_第1张图片

思路

  1. 首先从左往右计算空格的数量
  2. 反向替换空格,因为正向替换,需要大量的移动

代码


    public String replaceSpace(StringBuffer str) {
        int spaceNum=0;
        int newLength=0;
        int oldIndex;

        // 统计数量
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)==' '){
                spaceNum++;
            }
        }

        newLength=str.length()+spaceNum*2;

        oldIndex=str.length()-1;
        //逆向替换

        str.setLength(newLength);

        while(oldIndex>=0&&oldIndexif (str.charAt(oldIndex)==' '){
                str.setCharAt(--newLength,'0');
                str.setCharAt(--newLength,'2');
                str.setCharAt(--newLength,'%');


            }
            else {

                str.setCharAt(--newLength,str.charAt(oldIndex));
            }
             oldIndex--;
        }
        return str.toString();
    }

通过

替换空格 剑指Offer_第2张图片

你可能感兴趣的:(替换空格 剑指Offer)