点击查看剑指Offer全解【Java & Golang】实现
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路
第一种思路是直接使用系统的内置字符串处理库去替换掉所有的空格,但是这种方法一般是取巧方法,所以除非真的做不出来,否则不能使用。
第二种思路是先统计空格的数量,在新建一个字符数组用于容纳所需的所有字符(包括%20),然后依次将所有字符及%20插入到新的字符数组中。
Java实现
public class Solution {
public String replaceSpace(StringBuffer str) {
char[] chars = str.toString().toCharArray();
// 统计空格数和非空格数
int spaceCount = 0, charCount = 0;
for (int i = 0; i < chars.length; i++) {
if (chars[i] == ' ') {
spaceCount++;
} else {
charCount++;
}
}
// 计算最终所需长度
int len = charCount + 3 * spaceCount;
char[] res = new char[len];
// 指向res和chars首部的指针
int index1 = 0, index2 = 0;
while (index1 < res.length && index2 < chars.length) {
if (chars[index2] != ' ') {
res[index1++] = chars[index2++];
} else {
char[] aux = new char[]{'%', '2', '0'};
for (char c:aux) {
res[index1++] = c;
}
index2++;
}
}
return new String(res);
}
}
本文介绍了一种将字符串中的空格替换为“%20”的算法实现,避免使用系统内置库,通过统计空格数量并创建新字符数组来逐个插入字符及%20,适用于URL编码场景。
1323

被折叠的 条评论
为什么被折叠?



