剑指offer:替换空格

二维数组中的查找

题目

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

分析

       C/C++中每个字符串都已字符’\0’作为结尾,这样我吗就能很方便的找到字符串的末位,但是这个特点导致字符串都有一个额外的开销。而在Java和C#中,String是不可变的,一旦试图改变,将产生一个新的实例。所以要活用StringBuilder和StringBuffer。可参考这个博文:从源码角度分析Java三种字符串

       用Java实现本题,输入的是一个StringBuffer,我们可以先定义一个返回字符串StringBuffer类型,遍历一遍字符串,使用charAt(int i)方法,如果当前字符没空字符,则使用append(char c)添加给定字符,如果不是则添加该字符。最后把StringBuffer变成String返回。使用toStirng()方法。

实现

public String replaceSpace(StringBuffer str) {
    StringBuilder newstr =new StringBuilder();
    for(int i=0;i<str.length();i++){
        if(str.charAt(i)==' ' )
            newstr.append("%").append("2").append("0");
        else
           newstr.append(str.charAt(i));
    }
           return newstr.toString();
}

友情链接

所有的剑指offer代码,我托管到GitHub上了,可以直接运行,对照博客理解思路。wustzoujing/Algorithm_Learning。觉得还可以的麻烦fork一下。

坚持原创技术分享,您的支持将鼓励我继续创作!