剑指offer在线编程——替换空格        

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

思考:首先想到的问题是String,StringBuffer和StringBuilder类之间的区别

    1.对于三者的定义和区别记录如下:

      java提供了String 和 StringBuffer两个类来封装字符串,并提供了一系列方法来操作字符串对象。

     (1)String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可更改的,直至这个对象被销毁。

     (2)StringBuffer对象则代表一个字符序列可变的字符串,同时可以调用toString()方法将其转换为一个String对象。

     (3)StringBuilder和StringBuffer基本相似。不同的是,StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。通常需要创建一个内容可变的字符串对象,则应该首先考虑使用StringBuilder类。

   2.String类提供了大量的构造器,也提供了大量的方法来操作字符串对象:

     (1)String():创建0个字符串的String对象;

     (2)String(char[] value,int offset, int count):将指定的字符数组从offset开始、长度为count的字符元素连缀成字符串;

     (3)char charAt(int index):获取字符串中指定位置的字符;

     (4)int compareTo(String anotherString):比较两个字符串大小

     (5)char[] toCharArray():将String对象转换成char数组。

    更多的就不说了。。。。。。

    其次,考虑到问题的要求,提出判断字符为空的方法,我们采用  ch == ' ' 就可以了,一定要注意''之间要有空格,不然程序会出错(小问题,但是很蛋疼。。。。。)

代码解答:      

public class Solution {
  public String replaceSpace(StringBuffer str) {
    int strLen = str.length();   //记录字符串长度
    StringBuffer newStr = new StringBuffer();  //创建一个新的空字符串
    for(int i=0;i<strLen;i++){
      char ch = str.charAt(i);
      if(ch != ' '){ //判断是否为空字符
        newStr.append(ch);    //使用append()方法
      }
      else
        newStr.append("%20");
    }
    return newStr.toString();
  }
}

        

posted on 2016-10-29 17:35  看一场塞北的雪  阅读(295)  评论(0)    收藏  举报