本文共 1234 字,大约阅读时间需要 4 分钟。
目录
请实现一个函数,将一个字符串(给定的是StringBuffer)中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution { public String replaceSpace(StringBuffer str) { return str.toString().replaceAll(" ", "%20"); } }
此方法的缺点是:replaceAll()方法采用了正则表达式,内部会各种创建、销毁对象,性能比较差。
public class Solution { public String replaceSpace(StringBuffer str) { String s = str.toString(); StringBuilder sb = new StringBuilder(); for (int i=0; i
先将原来的StringBuffer变到替换之后的总长度,再从字符串的后面开始复制和替换。
public class Solution { public String replaceSpace(StringBuffer str) { //1、增加总长度 int P1 = str.length() - 1; //原字符串的末尾 for (int i = 0; i <= P1; i++) if (str.charAt(i) == ' ') str.append(" "); //2、从后往前复制 int P2 = str.length() - 1; //新字符串的末尾 while (P1 >= 0 && P2 > P1) { char c = str.charAt(P1--); if (c == ' ') { str.setCharAt(P2--, '0'); str.setCharAt(P2--, '2'); str.setCharAt(P2--, '%'); } else { str.setCharAt(P2--, c); } } return str.toString(); } }
转载地址:http://dfnii.baihongyu.com/