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

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
评论
13
1
分享
牛客网
牛客企业服务