0%

剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

题目来源:剑指 Offer 05

题目链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/

题目描述

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

示例 1:

1
2
输入:s = "We are happy."
输出:"We%20are%20happy."

限制:

0 <= s 的长度 <= 10000

问题分析

示例代码

正则表达式

1
2
3
public String replaceSpace(String s) {
return s.replaceAll("\\s","%20");
}

执行结果:

image-20210207214401593

JAVAAPI

1
2
3
4
5
6
7
8
9
10
11
12
public String replaceSpace(String s) {
StringBuilder builder = new StringBuilder();
for(int i =0;i<s.length();i++){
char ch = s.charAt(i);
if(String.valueOf(ch).equals(" ")){
builder.append("%20");
}else{
builder.append(ch);
}
}
return builder.toString();
}

执行结果:

image-20210207214339679

双指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public String replaceSpace(String s){
if(s == null || s.length() == 0) return s;
char [] arr = s.toCharArray();//数组化
int numOfBlank = 0;
for(char c : arr)
if(c == ' ') numOfBlank++;
//数组扩容
char[] arrNew = new char[arr.length+numOfBlank*2];
for(int i =0 ;i<arr.length;i++)
arrNew[i] = arr[i];
int p1 = arr.length-1;//指向原始字符串的末尾
int p2 = arrNew.length-1;//指向替换之后的字符串的末尾
for(;p1!=p2;){
if(arrNew[p1] != ' '){
arrNew[p2--] = arrNew[p1--];//
}else{
p1--;
arrNew[p2--] = '0';
arrNew[p2--] = '2';
arrNew[p2--] = '%';
}
}
return String.valueOf(arrNew);
}

执行结果:

image-20210207214316139

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道