Coding

2665. Counter II

2023-05-07 2 min read

題目敘述

Write a function createCounter. It should accept an initial integer init. It should return an object with three functions.

The three functions are:

  • increment() increases the current value by 1 and then returns it.
  • decrement() reduces the current value by 1 and then returns it.
  • reset() sets the current value to init and then returns it.

Example 1:

Input: init = 5, calls = [“increment”,“reset”,“decrement”] Output: [6,5,4] Explanation: const counter = createCounter(5); counter.increment(); // 6 counter.reset(); // 5 counter.decrement(); // 4

Example 2:

Input: init = 0, calls = [“increment”,“increment”,“decrement”,“reset”,“reset”] Output: [1,2,1,0,0] Explanation: const counter = createCounter(0); counter.increment(); // 1 counter.increment(); // 2 counter.decrement(); // 1 counter.reset(); // 0 counter.reset(); // 0

解題思路

Solution

/**
 * @param {integer} init
 * @return { increment: Function, decrement: Function, reset: Function }
 */
var createCounter = function(init) {
    let counter = init;
    const increment = () => counter += 1;
    const decrement = () => counter -= 1;
    const reset = () => counter = init;
    return{increment, decrement, reset};
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */
type ReturnObj = {
    increment: () => number,
    decrement: () => number,
    reset: () => number,
}

function createCounter(init: number): ReturnObj {
    let counter: number = init;
    const increment = (): number => counter += 1;
    const decrement = (): number => counter -= 1;
    const reset = (): number => counter = init;
    return {increment, decrement, reset};
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */
← Posts
meow~