剑指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();
}
}
浙公网安备 33010602011771号