题目:请实现一个函数,讲一个字符串中的空格替换成%20。例如字符串为Hello World,经过替换后的字符串为Hello%20World。
解:实现1-直接遍历然后替换,时间复杂度为O(N^2);
实现2- 双指针时间复杂度为O(N);
//实现1 正则
function replaceSpace(str) {
//直接正则replace所有空格
return str.replace(/\s/g, "%20");
//先过滤去除字符串前后可能有的空格,再用正则去replace所有空格
// return str.trim().replace(/\s/g, "%20");
}
//实现2 双指针
function replaceSpace2(str) {
if (!str || !str.length) {
return "";
}
let chs = [];
// i:新字符串的下标、j:原字符串的下标
for (let i = 0, j = 0; j < str.length; j++) {
if (str[j] === " ") {
chs[i++] = "%";
chs[i++] = "2";
chs[i++] = "0";
} else {
chs[i++] = str[j];
}
}
return chs.join("");
}