Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.
Example:
Input: s = "abcdefg", k = 2
Output: "bacdfeg"
Restrictions:
- The string consists of lower English letters only.
- Length of the given string and k will in the range [1, 10000]
这个题目其实还挺麻烦的,就一点点拼凑吧。
/**
* @param {string} s
* @param {number} k
* @return {string}
*/
var reverseStr = function(s, k) {
if(k>s.length)return s.split("").reverse().join("");
var result="";
for(var i=0;i<Math.ceil(s.length/(2*k));i++){
if((i*2*k+k)<s.length)result+=s.slice(i*2*k,i*2*k+k).split("").reverse().join(""); //采用提取字符串,转换为数组,反转,再拼接为字符串 的方法
else result+=s.slice(i*2*k).split("").reverse().join("");//排除长度不足的情况
if((i*2*k+2*k)<s.length)result+=s.slice(i*2*k+k,i*2*k+2*k);//直接提取不需要反转的字符串部分。
else result+=s.slice(i*2*k+k);//排除长度不足的情况。
}
return result;
};