题目
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy." 输出:"We%20are%20happy."
限制:0 <= s 的长度 <= 10000
思路
- 扩充数组至替换后的大小;
- 使用双指针法将数组从后往前替换空格(i指向新长度的末尾,j指向旧长度的末尾,如下图所示)
JavaScript
* @param {string} s
* @return {string}
*/
var replaceSpace = function(s) {
//字符串转换成数组
// const strArr = Array.from(s)
strArr = s.split('')
let count = 0
//计算空格的数量
for (let i = 0; i < strArr.length; i++) {
if (strArr[i] === ' '){
count++
}
}
//替换空格为%20
let left = strArr.length - 1
let right = strArr.length + count * 2 - 1 //这里*2是因为%20位三字符长度,减去原有的1个空格
while (left >= 0) {
if (strArr[left] === ' ') {
strArr[right--] = '0'
strArr[right--] = '2'
strArr[right--] = '%'
left--
} else {
strArr[right--] = strArr[left--]
}
}
//数组复原为字符串
return strArr.join('')
};
使用正则表达式
var replaceSpace = function(s) {
return s.replace(/\s/g,"%20");
};
js小技巧【很神奇】
var replaceSpace = function(s) {
// 1.将字符串转换为数组,使用 js 字符串方法 `split(' ')`
let res = s.split(' ');
// 2.将数组转化为字符串,使用 js 数组方法`join('%20')`
let newS = res.join('%20');
return newS;
};