博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer试题系列
阅读量:3905 次
发布时间:2019-05-23

本文共 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/

你可能感兴趣的文章
vb 中如何做同步 异步?
查看>>
geturl
查看>>
2016年安大校赛(补题)
查看>>
BESTCODER ROUND92 1001.Skip the Class
查看>>
POJ 1661 Help Jimmy
查看>>
百练OJ 2755 神奇的口袋(递归+递推)
查看>>
HDU 1003 Max Sum
查看>>
Code Vs 1014 装箱
查看>>
循环队列,队链的实现
查看>>
HDU 2602 Bone Collector (01背包)
查看>>
POJ 1837 Blance (01背包)
查看>>
HDU 2456 饭卡 (01背包)
查看>>
HDU 1559 最大子矩阵
查看>>
Open Judge 4010 :2011
查看>>
百练OJ-2815 城堡问题【DFS】
查看>>
CODE[VS] 1025 选菜 【背包】
查看>>
POJ 1724 ROADS【DFS+剪枝】
查看>>
AOJ 847 整数拆段
查看>>
AOJ 848 分数拆分
查看>>
UVA 133 The Dole Queue 【约瑟夫环】
查看>>