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