转载自 力扣 剑指Offer 第五题
思路整理:
大致方法: 双指针 此想法来自于JS题解点赞量最高的大佬 膜拜大佬~ 首先我们要了解 英文的空格符 占了一个字符单位 中文的空格符 占了两个字符单位 此题 为英文空格符 题中 将空格替换成 '%20'占了三个字符单位 本题运用双指针 需要比较原字符串长度 和 新占位字符串长度的关系 空格 占 1单位 %20 占3单位 我们记录下原字符串 中空格的数量 得出关系 newLength=oldLength+count*2 我们得出了占位和原字符串长度 下面进行遍历 s指针指向原字符串最后一项 跟 j指针指向占位字符串最后一项 比较 s指针 指向不为空格的时候 j 指针 指向与s指针指向互换 s指针为空格时 开始替换 %20 j指向位置 换成0 位置j-1 换成2 位置j-2 换成% 最后将数组转换为字符串
var replaceSpace = function(s) {s=s.split('')var count=0let oldLength=s.lengthfor(let i=0;i if(s[i]===' ') {count++ } }s.length+=count*2for(let j=s.length-1,c=oldLength-1;c>=0;j--,c--){ if(s[c]!==' ') { s[j]=s[c] } else{ s[j]='0' s[j-1]='2' s[j-2]='%' j-=2 }}return s.join('')};