剑指offer(4) 替换空格

1.题目、

请实现一个函数,把字符串中的每个空格替换成”%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。

2.解题分析

遍历一次字符串,统计空格数量并在原来的长度上加上空格数量*2,设置两个指针p1,p2,p1指向原字符串尾部,p2指向添加后的字符串尾部,p1,p2向前移动,p1逐个将它指向的字符复制到p2的位置,直到p1遇到空格,此时p1向前移动移动一格,p2移动3格插入“%20”,直到p1,p2指向同一位置

3.代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public String replaceSpace(StringBuffer str) {
if (str == null) {
System.out.println("输入错误!");
return null;
}
int length = str.length();
int indexOfOriginal = length-1;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ' ')
length += 2;
}
str.setLength(length);
int indexOfNew = length-1;
while (indexOfNew > indexOfOriginal) {
if (str.charAt(indexOfOriginal) != ' ') {
str.setCharAt(indexOfNew--, str.charAt(indexOfOriginal));
} else {
str.setCharAt(indexOfNew--, '0');
str.setCharAt(indexOfNew--, '2');
str.setCharAt(indexOfNew--, '%');
}
indexOfOriginal--;
}
return str.toString();
}
-------------本文结束感谢您的阅读-------------
0%