代码随想录算法训练营第8天|字符串Part01

记录题目:

  • 反转字符串 II
  • 替换数字

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
1
2
3
4
5
6
7
8
9
10
11
12
var reverseStr = function(s, k) {
const len = s.length;
let resArr = s.split("");
for(let i = 0; i < len; i += 2 * k) { // 每隔 2k 个字符的前 k 个字符进行反转
let l = i - 1, r = i + k > len ? len : i + k;
while(++l < --r) [resArr[l], resArr[r]] = [resArr[r], resArr[l]];
// 反转数组 arr 中从 [left, right] 的元素
// let l = left - 1, r = right + 1;
// while (++l < --r) [arr[l], arr[r]] = [arr[r], arr[l]];
}
return resArr.join("");
};
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×