《剑指offer》官方思路解法Java版

替换空格

http://www.nowcoder.com/practice/0e26e5551f2b489b9f58bc83aa4b6c68

《剑指offer》官方思路解法Java版

牛客网是不是今年改版了,之前的解题思路都被清理掉了。看了下大家的题解好像都没有分享这种方法。
虽然Java版的参数传入是String类,不像C语言直接就是字符数组,也不能直接在数组后面扩容。但是其实可以利用StringBuffer类来实现这样的操作。具体的思路的话书上已经讲解了,这里主要是贴出程序来介绍Java的实现方式。

pubilc class Solution{
    pubilc String replaceSpace(String s){
        if(s == null){ return null; }
        StringBuffer str = new StringBuffer(s);
        int length = str.length();
        int spaceNum = 0;
        for(int i = 0;i < length;i++){    if(str.charAt(i) == ' '){ spaceNum++; } }

        int oldStr = length - 1;
        length += 2 * spaceNum;
        int newStr = length - 1;
        str.setLength(length);
        while(spaceNum > 0 && newStr >= 0){
            char ch = str.charAt(oldStr--);
            if(ch == ' '){ 
                str.setCharAt(newStr--,'0');
                str.setCharAt(newStr--,'2');
                str.setCharAt(newStr--,'%');
                spaceNum--;
            }
            else{ str.setCharAt(newStr--,ch); }
        }

        return str.toString();
    }
}
全部评论
pubilc
点赞 回复 分享
发布于 2021-04-24 21:50
没什么意思
点赞 回复 分享
发布于 2021-06-10 21:08

相关推荐

23 4 评论
分享
牛客网
牛客企业服务