剑指offer——Java实现

面试题4:替换空格

2016-10-05  本文已影响16人  _minimal

题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy

代码实现

public class Solution {
    public String replaceSpace(StringBuffer str) {
        //先计算空格的数量
        int blankNum = 0;
        int len1 = str.length();
        for(int i = 0;i < len1;i++){
            if(str.charAt(i) == ' ')
                blankNum++;
        }
        //扩充str的长度
        int len2 = len1 + blankNum * 2;
        str.setLength(len2);
        //从后往前替换
        for(int i = len1-1,j = len2-1;i >= 0;i--){
            if(str.charAt(i) == ' '){
                str.setCharAt(j--,'0');
                str.setCharAt(j--,'2');
                str.setCharAt(j--,'%');
                if(--blankNum == 0) break;
            }else{
                str.setCharAt(j--,str.charAt(i));
            }
        }
        return str.toString();
    }
}

主要思路

1、从后向前移动,每个元素最多移动一次
2、主要记住几个api:length(),setLength(),charAt(i),setCharAt(i,'0')
3、代码优化:if(--blankNum == 0) break;

上一篇下一篇

猜你喜欢

热点阅读