题意:
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
思路:
- JS有内置的库函数,直接return s.replaceAll(' ',%20)
- 因为字符串是不能更改的,所以要把字符串转换为数组。这时因为%20的空间是大于空格的,我们要对数组进行扩充。出现一个空格,我们就要多扩展两个长度。
- 计算有多少个空格,再用双指针从后往前的对数组进行扩充
- 左指针从原数组的末尾向左进行遍历,遇到空格则让右指针进行%20的填充,遇到字符,则将字符赋给右指针的指向。左指针和右指针一同向左遍历,直到左指针从后往前遍历完整个数组
/**
* @param {string} s
* @return {string}
*/
var replaceSpace = function(s) {
let arr = s.split('')
let count = 0
for(let i = 0;i<arr.length;i++){
if(arr[i]==' '){
count++
}
}
let left = arr.length-1
let right = arr.length+2*count-1
for(let i=left;i>=0;i--){
if(arr[i]!==' '){
arr[right] = arr[i]
right--
}else{
arr[right] = '0'
arr[right-1] = '2'
arr[right-2] = '%'
right -= 3
}
}
return arr.join('')
};