【剑指Offer】面试题5:替换空格

题目:请实现一个函数,将一个字符串中的空格替换成 “%20”。例如,当字符串为 We Are Happy,则经过替换之后的字符串为 We%20Are%20Happy。

实现

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
26
27
28
29
30
public class Solution {
public String replaceSpace(StringBuffer str) {
// 特殊输入检查
if (str == null || str.length() == 0)
return "";

char[] strCharArr = str.toString().toCharArray();

// 统计空格数量
int spaceNum = 0;
for (int i = 0; i < strCharArr.length; i++)
if (strCharArr[i] == ' ')
spaceNum++;

// 构造新字符数组
char[] repStrCharArr = new char[strCharArr.length + spaceNum * 2];
int j = 0;
for (int i = 0; i < strCharArr.length; i++) {
if (strCharArr[i] == ' ') {
repStrCharArr[j++] = '%';
repStrCharArr[j++] = '2';
repStrCharArr[j++] = '0';
continue;
}
repStrCharArr[j++] = strCharArr[i];
}

return String.valueOf(repStrCharArr);
}
}