【剑指offer】替换空格 -- Java双指针实现

替换空格

http://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423

/*
*利用双指针方法
*/
public class Solution {
    public String replaceSpace(StringBuffer str) {
        //计算空格的数量
        int blankNum=0;
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)==' '){
                blankNum++;
            }
        }
        //记录初始的字符串、插入后的字符串的长度
        int originalStringLength=str.length();
        int newStringLength=originalStringLength+2*blankNum;
        //重新设置str的长度
        str.setLength(newStringLength);
        //定义两个指针,分别指向新旧字符串的末尾
        int indexOfOriginalString=originalStringLength-1;
        int indexOfNewString=newStringLength-1;
        //结束条件及确保是否越界
        while(indexOfOriginalString>=0&&indexOfNewString>indexOfOriginalString){
            if(str.charAt(indexOfOriginalString)==' '){
                //插入语%20
                str.setCharAt(indexOfNewString--,'0');
                str.setCharAt(indexOfNewString--,'2');
                str.setCharAt(indexOfNewString--,'%');
        }else{
                str.setCharAt(indexOfNewString--,str.charAt(indexOfOriginalString));
            }
            indexOfOriginalString--;
        }
        return str.toString();
    }
}
全部评论
感觉while中的第二个判断条件没有用,我去掉了也能过
点赞 回复 分享
发布于 2020-12-05 18:00

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
13
1
分享
牛客网
牛客企业服务