剑指offer——替换空格

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

public class Solution {
    public String replaceSpace(StringBuffer str) {
    	
    }
}

  

StringBuffer StringBuilder和String的区别

速度上:String<StringBuffer<StringBuilder

线程安全:StringBuffer是线程安全的,StringBuilder是非线程安全的

String长度是不可变的,每次改变都要进行字符串的复制,StringBuffer和StringBuilder可以直接在字符串上进行修改

 

自己的方法:

直接使用的是StringBuffer中现有的方法:

    replace(int start, int end, String str):把从start到end的部分替换为str,包含start不包含end,返回的依然是StringBuffer。

获取StringBuffer中某处的字符不能使用数组形式str[i],需要使用  charAt(int index):通过脚标获取字符。

而StringBuffer变为String,可通过toString()方法变成字符串。

字符串String类、字符串缓冲区StringBuffer和StringBuilder、及常用方法

 
public class Solution {
    public String replaceSpace(StringBuffer str) {
    	String res = "";
        if(str == null){
            return res;
        }
        for(int i = 0; i < str.length(); ++i){
            if(str.charAt(i) == ' '){
                
                str.replace(i, i + 1, "%20");
            }
        }
        res = str.toString();
        return res;
    }
}

  

别人的方法:

不使用StringBuffer的replace方法,而是重新new一个StringBuffer,通过判断空格,采用append的方法来添加,append(数据):将指定数据(任意类型)作为参数添加到已有数据的结尾处

public class Solution {
    public String replaceSpace(StringBuffer str) {
        String sti = str.toString();
        char[] strChar = sti.toCharArray();
        StringBuffer stb = new StringBuffer();
        for(int i=0;i<strChar.length;i++){
            if(strChar[i]==' '){
                stb.append("%20");
            }else{
                stb.append(strChar[i]);
            }
        }
        return stb.toString();
    }
}

  

 

 

 

posted @ 2018-03-07 10:11  SkyeAngel  阅读(151)  评论(0编辑  收藏  举报