剑指offer第2题:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
理解:
本题的重点是把StringBuffer用好,这是一个字符串变量类型,使用它可以通过调用append方法便捷地对字符串进行加工。
建立一个新的字符串StringBuffer。通过检测是否为空格来进行替换,如果是则append一个指定内容,如果不是则append原字符。需要注意的是最后返回时要按照返回值类型将StringBuffer转为String。
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str == null){ //若为空不需要转换
return null;
}
StringBuffer newstr = new StringBuffer(); //建立一个新的字符串对象
for(int i = 0; i < str.length(); i++){
if(String.valueOf(str.charAt(i)).equals(" ")){ //依次进行判断是否为空格、且要注意转为String后来对比
newstr.append("%20");
}
else{
newstr.append(str.charAt(i)); //否则就append原字符
}
}
return String.valueOf(newstr); //根据返回值的类型,要把最后的返回结果转换为String类型
}
}
知识点:
- String、StringBuffer、StringBuilder类的使用和区别;
- append()、charAt()、String.valueOf()、xx.toString();