题目描述: 请实现一个函数,将一个字符串的每个空格替换成“%20”。例如,当字符串为We Are Happy。则经过替换之后的字符串为We%20Are%20Happy;
思路:但凡java程序员,看到替换的题目都会大笑一声,这用个replace不就完事了(str.replace(" ","%20")),不料,面试官看到这个代码,“你,看什么看,就你,回去等通知吧”。 做算法题,核心代码不能偷懒,乖乖写给面试官看看,用库函数还需要我们干嘛! 这个题如果不限制空间复杂度,创建一个新的StringBuilder(虽然线程不安全,但是快啊,你咬我?),遇到空格就拼接就完事了;
小细节:做字符串拼接的时候不要用String,String属于不可变类,底层依旧用StringBuilder实现,所以无论是效率还是空间上,String都低太多!
public class Solution{
public String replaceSpace(StringBuffer str){
if(str == null){
return null;
}
StringBuilder strRes = new StringBuilder();
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) == ' '){
strRes.append("%20");
}else{
strRes.append(str.charAt(i));
}
}
return strRes.toString();
}
}