🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。
请你写一个函数 createCounter。这个函数接收一个初始的整数值 init。并返回一个包含三个函数的对象。
这三个函数是:
示例 1:
输入:init = 5, calls = ["increment","reset","decrement"]
输出:[6,5,4]
解释:
const counter = createCounter(5);
counter.increment(); // 6
counter.reset(); // 5
counter.decrement(); // 4
示例 2:
输入:init = 0, calls = ["increment","increment","decrement","reset","reset"]
输出:[1,2,1,0,0]
解释:
const counter = createCounter(0);
counter.increment(); // 1
counter.increment(); // 2
counter.decrement(); // 1
counter.reset(); // 0
counter.reset(); // 0
提示:
通过调用 createCounter(5) 创建了一个计数器对象,并将其赋值给 counter 变量。然后,分别调用 increment、reset 和 decrement 方法,检查计数器的值的变化。
具体来说,调用 counter.increment() 会将计数器的值加1,并返回新的值;调用 counter.reset() 会将计数器的值重置为初始值,并返回重置后的值;调用 counter.decrement() 会将计数器的值减1,并返回新的值。
在上述示例中,调用 counter.increment() 后,计数器的值从5变为6;然后调用 counter.reset(),计数器的值重置为5;最后调用 counter.decrement(),计数器的值减1,变为4。
/**
* @param {integer} init
* @return { increment: Function, decrement: Function, reset: Function }
*/
class Counter {
constructor(init) {
this.init = init;
this.num = init;
}
reset() {
this.num = this.init;
return this.num;
}
increment() {
this.num++;
return this.num;
}
decrement() {
this.num--;
return this.num;
}
}
var createCounter = function (init) {
return new Counter(init);
};
/**
* const counter = createCounter(5)
* counter.increment(); // 6
* counter.reset(); // 5
* counter.decrement(); // 4
*/
关注公众号『前端也能这么有趣
』,获取更多有趣内容。
🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『
前端也能这么有趣
』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。