题目
请实现一个函数,把字符串中的每个空格替换成 “%20”。 例如输入 “We are happy.”,则输出”We%20are%20happy.”。
知识点
- C/C++中的字符串都以‘/0’结尾
- C/C++把常量字符串放到单独的内存区域,当几个指针赋值给相同的常量字符串时,它们实际上指向相同内存地址(java中也是把常量放到常量池);不同的字符数组则会开辟不同的空间。
- C#中String的内容是不能改变的,一旦试图改变String的内容,就会产生一个新的实例。(Java中也是,可以用StringBuffer/StringBuilder)
思路
- 开辟一个StringBuffer sb,从前往后扫描原字符串,不是空格的复制到sb,扫描到空格时,sb添加"%20" 。
- 时间复杂度O(n)。
代码
public class BlankReplace{
public String replace(String str){
StringBuffer sb = new StringBuffer();
for(int i = 0; i<str.length();i++){
if(str.charAt(i) != ' '){
sb.append(str.charAt(i));
}
else{
sb.append("%20");
}
}
return sb.toString();
}
}