面试题4:替换空格

作者: _minimal | 来源:发表于2016-10-05 21:57 被阅读16次

    题目描述

    请实现一个函数,将一个字符串中的空格替换成“%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;

    相关文章

      网友评论

        本文标题:面试题4:替换空格

        本文链接:https://www.haomeiwen.com/subject/qyqeyttx.html