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

替换空格

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

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

1. 调用自带函数

public class Solution {
    public String replaceSpace(StringBuffer str) {
        return str.toString().replace(" ", "%20");
    }
}

2. 用新的数组存

1. 分析:

当遇到 " ",就追加 "%20",否则遇到什么追加什么

import java.util.*;
public class Solution {
    public String replaceSpace(StringBuffer str) {
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            if(c == ' '){
                sb.append("%20");
            }else{
                sb.append(c);
            }
        }
        return sb.toString();
    }
}

3. 用双指针法


/*
*利用双指针方法
*/
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();
    }
}

全部评论

相关推荐

吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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