替换空格

替换空格

https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey

参数为String型,利用StringBuffer

public String replaceSpace(String s) {
        if(s.length() == 0)
            return "";
        StringBuffer sb = new StringBuffer();
        int n = s.length();

        for(int i = 0; i < n; i++){
            if(s.charAt(i) == ' ')
                sb.append("%20");
            else sb.append(s.charAt(i));
        }
        return sb.toString();       
    }

参数为StringBuffer型

/**
    不使用StringBuffer,在原来的上面进行扩容
    */
    public String replaceSpace(StringBuffer s) {
        if(s.length() == 0)
            return "";
        int cnt = 0; //空格的数量
        int oldLen = s.length();
        for(int i = 0; i < oldLen; i++){
            if(' ' == s.charAt(i))
                cnt++;
        }
        int newLen = oldLen+cnt*2;  //字符串的新长度
        int newIndex = newLen-1;  //扩容后的字符串的最后一个位置
        s.setLength(newLen);

        for(int i = oldLen-1; i >= 0; i--){
            if(' ' == s.charAt(i)){
                s.setCharAt(newIndex--,'0');
                s.setCharAt(newIndex--,'2');
                s.setCharAt(newIndex--,'%');
            }else{
                s.setCharAt(newIndex--,s.charAt(i));
            }
        }
        return s.toString();

    }
剑指offer 文章被收录于专栏

为刷过的每一道题都书写一篇题解,便于重复练习~

全部评论

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务