本文共 1206 字,大约阅读时间需要 4 分钟。
剑指offer之题目5
题目描述:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。public class P3 { public static String replaceSpace(StringBuffer str) { String c="%20"; for(int i=0;i
这是我自己写的一个思路,刚开始还以为是不是我写的太容易了,结果惊喜的发现自己运行通过了,实在是一件很快乐的事情。不过我打开别人的解题思路一看,发现原来别人使用java的运行该题,并没有使用String类的replace()方法,他们自己写了一个函数实现replace的功能,答案也是这样子做的,具体代码如下(我自己再加点注释,以便后续理解)
public static String replaceSpace1(StringBuffer str) { int P1 = str.length() - 1;//记录字符串的长度 for (int i = 0; i <= P1; i++) if (str.charAt(i) == ' ') str.append(" ");//以"A B"为例,当i=1时,遍历到空格,这时str.append(" "), // str尾部就有了两个个空格,注意,引号里面是两个空格,加上字符串原有的一个空格,总共三个空格, // 分别用于填充'&','2','0' int P2 = str.length() - 1; while (P1 >= 0 && P2 > P1) { char c = str.charAt(P1--);//先把原先的字符串末尾的字符拿到,然后再让索引减一 if (c == ' ') { //判断c是不是空格,如果是,逆序添加三个字符 str.setCharAt(P2--, '0');//从新的字符串长度的末尾添加字符。 str.setCharAt(P2--, '2'); str.setCharAt(P2--, '%'); } else { str.setCharAt(P2--, c); } } return str.toString(); }
转载地址:http://relen.baihongyu.com/