[Easy] LeetCode JS 30 - 2726. Calculator with Method Chaining (加减乘除计算机)

2024年3月7日

💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

LeetCode 30 Days of JavaScript

本题来自 LeetCode 的 30 天 JacaScript 挑战

2726. Calculator with Method Chaining (加减乘除计算机)

题目描述

请设计一个 Calculator 类别。该类别具有 add(加法)、subtract(减法)、multiply(乘法)、divide(除法)和 power(次方) 等数学运算功能。同时,还会支援连续操作的方法炼式 (method chaining)。 Calculator 类别的建构式会接受一个数字,来作为 result 的初始值。

具体来说,Calculator 类别应包含以下方法:

  • add 将给定的数字 valueresult 相加,并回传更新后的Calculator 物件
  • subtractresult 中减去给定的数字 value ,并回传更新后的Calculator 物件
  • multiplyresult 乘以给定的数字 value,并回传更新后的  Calculator 物件
  • divideresult 除以给定的数字 value,并回传更新后的  Calculator 物件。如果传入的值为 0,则抛出错误 "Division by zero is not allowed"
  • power 计算 result 的次方,指数为给定的数字 value,意即 result = result ^ value。在计算完后,回传更新后的  Calculator 物件。
  • getResult 传回 result的值
// 范例 1:
输入: actions = ["Calculator", "add", "subtract", "getResult"],
= [10, 5, 7]
输出: 8
解释:
new Calculator(10).add(5).subtract(7).getResult() // 10 + 5 - 7 = 8

// 范例 2:
输入: actions = ["Calculator", "multiply", "power", "getResult"],
= [2, 5, 2]
输出: 100
解释:
new Calculator(2).multiply(5).power(2).getResult() // (2 * 5) ^ 2 = 100

本题解答

以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习

解法

class Calculator {
  constructor(value) {
    this.value = value;
  }

  add(value) {
    this.value += value;
    return this;
  }

  subtract(value) {
    this.value -= value;
    return this;
  }

  multiply(value) {
    this.value *= value;
    return this;
  }

  divide(value) {
    if (value === 0) {
      throw new Error("Division by zero is not allowed");
    }
    this.value /= value;
    return this;
  }

  power(value) {
    this.value = Math.pow(this.value, value);
    return this;
  }

  getResult() {
    return this.value;
  }
}
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們