题目:
请实现一个函数,把字符串
s
中的每个空格替换成"%20"。
1、URL中无法识别空格,必须转为其他字符形式(将空格转换为“%20”)
2、String类型的不可变特性(每改变一次字符串,等于重新创建了一个新字符串,导致内存占用过大)
法一:使用集合类型进行字符串的复制修改操作,内存占用小,但是运行时间长
public String replaceSpace(String s) { List<String> list = new ArrayList<>(); for(int i = 0; i < s.length(); i++) { if(s.charAt(i) == 32){ list.add("%20"); } else { list.add(s.charAt(i)+""); } } return String.join("",list); }
法二:使用StringBuilder的不可变性,运行时间和占用内存达到最好
public String replaceSpace(String s) { StringBuilder builder=new StringBuilder(); for(int i = 0; i < s.length(); i++) { if(s.charAt(i) == 32){ builder.append("%20"); } else { builder.append(s.charAt(i)+""); } } return builder.toString(); }