刷题-空格替换

一、题目

刷题-空格替换

 

 二、重点难点分析

  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 };
上一篇:论文研读 —— 5. FaceNet A Unified Embedding for Face Recognition and Clustering (2/3)


下一篇:题解-AGC046F Forbidden Tournament/CF1338E JYPnation (hard)