541. 反转字符串 II javascript
题目:
给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例
输入: s = "abcdefg", k = 2
输出: "bacdfeg"
代码1
- 循环 切割 反转
var reverseStr = function(s, k) {
if(k==1)return s
var result = ''
for(var i=0;i<s.length;i+=(2*k)){
var st = s.substr(i,i+2*k)
// 如果少于k,则全部反转
if(st.length<k)st = st.split('').reverse().join('')
// 如果少于 2k 但 大于等于 k,则反转前k个字符
else if(st.length >=k && st.length <= 2*k){
st = st.substr(0,k).split('').reverse().join('') + st.substr(k,st.length-1)
}
result += st
}
return result
};
emm… 就错了,于是有了代码2
代码2
'abcdefg'
i=0 i=2 i=4 i=6
t='ab' t='cd' t='ef' t='g'
n=1 n=2 n=3 n=4
t='ba' t='cd' t='fe' t='g'
result='ba' result='bacd' result='bacdfe' result='bacdfeg'
result = 'bacdfeg'
var reverseStr = function(s, k) {
let n = 0, result = '';
for (let i = 0; i < s.length; i+=k) {
let st = s.slice(i, i+k);
n++;
if (n%2 === 1) {
st = st.split('').reverse().join('');
}
result = result + st;
}
return result;
};
学艺不精,还需努力💪