一、题目
二、重点难点分析
1.我们应该如何去替换空格,常规思路是从头扫到尾扫描字符串,每次碰到空格就替换,由于是把一个字符替换成三个字符,我们必须要把空格后面所有空格的字符都要后移两位,否则就有两个字符会被覆盖
2.我们可以换个思路,从后移动,设置两个指针,一个从旧字符串长度尾巴扫,一个从新字符串总长度尾部扫,扫整个字符串,记录空格数,因为新的字符串(替换)是旧字符串的两倍(一个空格一个位,替换需要三个位,还有两个,所以替换后的总长度要加上空格*2的数),所以新的字符串 = 旧字符串 +空格数乘以二;
3.因为我们是从后扫到头,终点的标志在 当 旧指针(旧字符串) 等于 新指针(新字符串) 就停止。
三、代码分析
1 /** 2 * @param {string} s 3 * @return {string} 4 */ 5 var replaceSpace = function(s) { 6 s = s.split(''); 7 let ordL = s.length; 8 let space = 0; 9 10 for( let i = 0; i < ordL; i++){ 11 if( s[i] == ' ') space++; 12 } 13 s.length = s.length + space*2; 14 15 for( let i = ordL - 1 , j = s.length - 1 ; i >= 0 ; i-- , j--){ 16 if( s[i] != ' ') s[j] = s[i]; 17 else{ 18 s[j - 2] = '%'; 19 s[j - 1] = '2'; 20 s[j] = '0'; 21 j -= 2; 22 } 23 } 24 25 return s.join(''); 26 };