JavaScript——leetcode剑指offer 05替换空格
题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
代码片
/**
* @param {string} s
* @return {string}
*/
var replaceSpace = function(s) {
//将字符转化为数组
s = s.split("");
// 获得s的长度length
let oldLen = s.length;
// 初始化space count为0 ,表示替换后得字符串的长度
let spaceCount = 0;
// 遍历字符串数组
for(let i = 0; i < oldLen; i++) {
if(s[i] === ' ') spaceCount++;
}
// 扩充字符串s的大小,也就是每个空格替换成“%20”之后的大小
s.length += spaceCount *2;
// 双指针法,从后向前将空格替换为“%20”
// i指向新长度的末尾,j指向旧长度的末尾
for(let i = oldLen -1,j = s.length -1; i>= 0;i--,j--) {
if(s[i] !== ' ') s[j] = s[i];
else{
s[j-2] = '%';
s[j-1] = '2';
s[j] = '0';
j -= 2;
}
}
return s.join('');
};