541.反转字符串 II

2020-05-15
反转字符串 II

给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起

的每隔 2k 个字符的前 k 个字符进行反转。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
题解:
思路1:暴力解
var reverseStr = function (s, k) {
  // tmp1 是要反转的 tmp2 是不要反转的
  let result = '', tmp1 = [], tmp2 = [], num = 0; 
  for (let i = 0; i < s.length; i++) {
    num++;
    // 每2k个字符 前k个反转 后k个不反转
    if (num <= k) tmp1.push(s[i]);
    else tmp2.push(s[i]);
    if (num < 2 * k) continue;
    // 当num = 2k时 把前k个反转后加入result中 后k个保留加入result中
    result += tmp1.reverse().join('');
    result += tmp2.join('');
    num = 0; // num归零 tmp都归空
    tmp1 = [];
    tmp2 = [];
  }
  // 将最后一组 也操作一次
  result += tmp1.reverse().join('');
  result += tmp2.join('');
  return result;
};

 

posted @ 2020-05-15 09:31  蓝小胖纸  阅读(155)  评论(0编辑  收藏  举报