二维数组中的查找
题目
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析
C/C++中每个字符串都已字符’\0’作为结尾,这样我吗就能很方便的找到字符串的末位,但是这个特点导致字符串都有一个额外的开销。而在Java和C#中,String是不可变的,一旦试图改变,将产生一个新的实例。所以要活用StringBuilder和StringBuffer。可参考这个博文:从源码角度分析Java三种字符串。
用Java实现本题,输入的是一个StringBuffer,我们可以先定义一个返回字符串StringBuffer类型,遍历一遍字符串,使用charAt(int i)方法,如果当前字符没空字符,则使用append(char c)添加给定字符,如果不是则添加该字符。最后把StringBuffer变成String返回。使用toStirng()方法。
实现
public String replaceSpace(StringBuffer str) {
StringBuilder newstr =new StringBuilder();
for(int i=0;i<str.length();i++){
if(str.charAt(i)==' ' )
newstr.append("%").append("2").append("0");
else
newstr.append(str.charAt(i));
}
return newstr.toString();
}
友情链接
所有的剑指offer代码,我托管到GitHub上了,可以直接运行,对照博客理解思路。wustzoujing/Algorithm_Learning。觉得还可以的麻烦fork一下。