剑指Offer05替换空格
1. 问题描述
请实现一个函数
,把字符串 s 中的每个空格替换成"%20"。
、示例 1:
输入:s = "We are happy." 输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
2. 代码实现
2.1 方法一
public String replaceSpace(String s) {
String result = s.replace(" ", "%20");
return result;
}
2.2 方法二
使用StringBuilder
public String replaceSpace(String s) {
int length = s.length();
// 使用StringBuilder来储存替换后的字符串
StringBuilder sb = new StringBuilder();
//遍历字符串
for (int i = 0; i < length; i++) {
char temp = s.charAt(i);
// 核心代码
if (temp == ' '){
sb.append("%20");
}else {
sb.append(temp);
}
}
return sb.toString();
}
2.3 方法三
String(byte[] bytes, int offset, int length)
通过使用平台的默认字符集解码指定的字节子阵列来构造新的 String 。
public String replaceSpace(String s) {
// 原始字符串的长度
int length = s.length();
// 长度设置成length的三倍,为了防止该问题的极限:全是空格
char[] chars = new char[length*3];
int index = 0;
for (int i = 0; i < length; i++) {
char temp = s.charAt(i);
if (temp == ' '){
chars[index++] = '&';
chars[index++] = '2';
chars[index++] = '0';
}else {
chars[index++] = temp;
}
}
// 使用char[] 字符数组来创建字符串
String result = new String(chars,0,index);
return result;
}
3. 结果分析
方法一执行结果:直接使用replace方法
- 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
- 内存消耗:37.6 MB, 在所有 Java 提交中击败了42.86%的用户
方法二执行结果:
- 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
- 内存消耗:37.5 MB, 在所有 Java 提交中击败了64.31%的用户
方法三执行结果:
- 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户、
- 内存消耗:37.5 MB, 在所有 Java 提交中击败了60.43%的用户