[Easy] LeetCode JS 30 - 2726. Calculator with Method Chaining (加減乘除計算機)

2024年3月7日

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

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+ 成長計畫看到

解法

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 上追蹤我們