空格替换剑指offer java详解
题目
方法1
public class Solution(StringBuffer str){
return str.toString().replace(" ","%20");
}
直接调用自带的replace函数
方法2
import java.util.*;
public class Solution{
public String replaceSpace(StringBuffer str){
StringBuffer str2=new StringBuffer();
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
if(c==' '){
str2.append("%20");
}
else
str2.append(c);
}
return str2.toString();
}
}
建一个StringBuffer str2,然后遍历str如果遇到空格就append %20,如果不是空格就照常扔进去,要注意的是最后还要返回toString
题目附录:
String与StringBuffer与StringBuilder的区别
String是不可变的,改变它的值其实是新建了一个对象,因为String的源码就是private final char 的数组
StringBuffer和StringBuilder是可变的,其中StringBuffer是线程安全的,StringBuilder是线程不安全的,两者用法上很相似只不过StringBuffer里很多方法都是synchronized关键字修饰了。
实际使用:在少量数据的情况下用String
在大量数据单线程的时候用StringBuilder
在大量数据多线程的时候用StringBuffer