用‘%20’替换空格
var replaceBlank = (charArr)=> {
if (!charArr || charArr.length ===0) return
var len = charArr.length
let spaceLen = 0
for (let i = 0; i < len; i++) {
if (charArr[i] === ' ') {
spaceLen++
}
}
var extraLen = spaceLen * 2 // '' -> 20% 每一个空格需要增加2个
charArr.length = len + extraLen
console.log(charArr.length, 'len')
let originalIndex = len - 1
let newIndex = charArr.length - 1
console.log(originalIndex, newIndex, '123')
// 新老指针同时移动,要保证都在数组的最后一位
while(originalIndex>=0 && newIndex > originalIndex) {
if (charArr[originalIndex] !== ' ') {
// 注意 a-- 与 --a的区别
// charArr[newIndex--] = charArr[originalIndex--]
charArr[newIndex--] = charArr[originalIndex]
// charArr[originalIndex] = ''
console.log(charArr.join(''), charArr[15], '1')
} else {
charArr[newIndex--] = '0'
charArr[newIndex--] = '2'
charArr[newIndex--] = '%'
console.log(charArr.join(''), '2')
// originalIndex--
}
originalIndex--
}
console.log(charArr)
}
replaceBlank('we are happy'.split(''))