剑指 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 };

#
浙公网安备 33010602011771号