剑指 Offer 05. 替换空格

方法一:暴力法

直接把原字符串的长度放大三倍,最多只会用这么长的新字符串。然后遍历原字符串,遇到' '时对字符串操作。

 

方法二:原地修改

遍历原字符串,记录‘ ’的数量,然后将字符串扩充相应的长度。用两个指针i , j ,j从新字符串的末尾开始遍历,i从原字符串末尾开始遍历,当遍历到' '时进行替换。

 1 /**
 2  * @param {string} s
 3  * @return {string}
 4  */
 5 var replaceSpace = function(s) {
 6     s = s.split("");
 7     let oldLength = s.length;
 8     let spaceCount = 0;
 9     for(let i = 0; i < s.length; i++) {
10         if(s[i] == ' ') {
11             spaceCount++;
12         }
13     }
14     s.length += spaceCount * 2;
15     for(let i = oldLength - 1, j = s.length - 1; i >= 0, i < j; i--, j--) {
16         if(s[i] != ' ') {
17             s[j] = s[i];
18         }else {
19             s[j] = '0';
20             s[j - 1] = '2';
21             s[j - 2] = '%';
22             j -= 2;
23         }
24     }
25     return s.join('');
26 };

 

posted @ 2021-09-03 21:41  雪之下。  阅读(46)  评论(0)    收藏  举报