随意随想

知其然,知其所以然

0%

LeetCode 05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成”%20”。

示例 1:

输入:s = “We are happy.”
输出:”We%20are%20happy.”

限制:

0 <= s 的长度 <= 10000

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 /**
* 1、统计字符串有多少空格
* 2、没有空格直接返回
* 采用双指针,从右往左赋值
*/
public String replaceSpace(String s) {
if (s == null || s.length() == 0) {
return s;
}
char[] chars = s.toCharArray();
StringBuilder str = new StringBuilder();
for (char c : chars) {
if (c == ' ') {
//有一个空格,需要多增加两个空格
str.append(" ");
}
}
//如果没有空格,返回
if (str.length() == 0) {
return s;
}
//左下标标记原字符串末尾
int left = s.length() - 1;
//扩容原数组,不使用新数组
s = s + str;
//右下标标记现数组的末尾
int right = s.length() - 1;
//开始往左移动,直到左左边数值为0

char[] charArray = s.toCharArray();
while (left >= 0) {
if (charArray[left] == ' ') {//等于空格
//当前值赋值
charArray[right] = '0';
right--;
charArray[right] = '2';
right--;
charArray[right] = '%';//最后
} else {
charArray[right] = charArray[left];
}
left--;
right--;
}
return new String(charArray);
}