题目二:
解题思路:按照题意进行模拟,奇怪的是右边区间我并没有添加限制条件,竟然也通过了,感觉测试用例有问题。
其实这个题用k = 3,s = 'a - o'进行模拟,就知道规律应该是这样了,用k = 2,不太容易看出来。
总结:通过这题,了解到JS还能这样交换位置,不过还是不太懂是怎么实现的,我得去看看了。
JS交换变量方法总结:
- 空变量
let num,
a=123,
b=456;
num=a;
a=b;
b=num;
console.log(a,b);
- 利用算数和或算数减
let a=123,
b=456;
a+=b;
b=a-b;
a-=b;
console.log(a,b);
- 利用位
let a = 123,
b = 456;
a ^= b;
b ^= a;
a ^= b;
console.log(a, b);
//或者这样
a = (b^=a^=b)^a;
- 利用对象
let a=123,
b=456;
a = {a:b,b:a};
b = a.b;
a = a.a;
console.log(a,b);
- 利用数组
let a = 123,
b = 456;
a = [a, b];
b = a[0];
a = a[1];
console.log(a, b);
- 仅供参考的大神写法
let a = 123,
b = 456;
a = [b,b=a][0];
console.log(a, b);
- ES6 解构赋值
let a = 123,
b = 456;
[a,b] = [b,a];
console.log(a, b);