【剑指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

相关推荐

牛客29046817...:优化一下简历,突出重点,简历上的技能复习扎实,实习工作啥的整理成文档梳理一下怎么说要有自己的思考在里边,岗位的话运维,测试,开发,实施,技术支持能投的都投,多投递能找到的,秋招投递了3个月左右(8月中旬到11月下旬),boos打招呼8000多次,官网投递300多家,才找到一家满意的
点赞 评论 收藏
分享
评论
13
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务