列表

详情


2726. 使用方法链的计算器

设计一个类 Calculator 。该类应提供加法、减法、乘法、除法和乘方等数学运算功能。同时,它还应支持连续操作的方法链式调用。Calculator 类的构造函数应接受一个数字作为 result 的初始值。

你的 Calculator 类应包含以下方法:

结果与实际结果相差在 10-5 范围内的解被认为是正确的。

 

示例 1:

输入:actions = ["Calculator", "add", "subtract", "getResult"], values = [10, 5, 7]
输出:8
解释:
new Calculator(10).add(5).subtract(7).getResult() // 10 + 5 - 7 = 8

示例 2:

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

示例 3:

输入:actions = ["Calculator", "divide", "getResult"], values = [20, 0]
输出:"Division by zero is not allowed"
解释:
new Calculator(20).divide(0).getResult() // 20 / 0 

由于不能除以零,因此应抛出错误。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Calculator { /** * @param {number} value */ constructor(value) { } /** * @param {number} value * @return {Calculator} */ add(value){ } /** * @param {number} value * @return {Calculator} */ subtract(value){ } /** * @param {number} value * @return {Calculator} */ multiply(value) { } /** * @param {number} value * @return {Calculator} */ divide(value) { } /** * @param {number} value * @return {Calculator} */ power(value) { } /** * @return {number} */ getResult() { } }

typescript 解法, 执行用时: 68 ms, 内存消耗: 42.2 MB, 提交时间: 2023-06-10 19:27:14

class Calculator {

    value: number
    
  constructor(value : number) {
      this.value = value
  }
    
  add(value : number) : Calculator {
      this.value += value
      return this
  }
    
  subtract(value : number) : Calculator {
      this.value -= value
      return this
  }
    
  multiply(value : number) : Calculator {
      this.value *= value
      return this
  }

  divide(value : number) : Calculator {
      if (value == 0) {
          throw 'Division by zero is not allowed'
      }
      this.value /= value
      return this
  }
    
  power(value : number) : Calculator {
      this.value **= value
      return this
  }

  getResult() : number {
      return this.value
  }
}

javascript 解法, 执行用时: 64 ms, 内存消耗: 40.5 MB, 提交时间: 2023-06-10 19:26:20

class Calculator {
    /** 
     * @param {number} value
     */
    constructor(value) {
        this.value = value;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    add(value) {
        this.value += value;
        return this;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    subtract(value) {
        this.value -= value;
        return this;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    multiply(value) {
        this.value *= value;
        return this;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    divide(value) {
        if (!value) {
            throw Error("Division by zero is not allowed");
        }
        this.value /= value;
        return this;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    power(value) {
        this.value = Math.pow(this.value, value);
        return this;
    }
    
    /** 
     * @return {number}
     */
    getResult() {
        return this.value;
    }
}

javascript 解法, 执行用时: 56 ms, 内存消耗: 41.1 MB, 提交时间: 2023-06-10 19:25:18

class Calculator {
    /** 
     * @param {number} value
     */
    constructor(value) {
        this.value = value;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    add(value) {
        this.value += value;
        return this;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    subtract(value) {
        this.value -= value;
        return this;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    multiply(value) {
        this.value *= value;
        return this;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    divide(value) {
        if (!value) {
            throw Error("Division by zero is not allowed");
        }
        this.value /= value;
        return this;
    }
    
    /** 
     * @param {number} value
     * @return {Calculator}
     */
    power(value) {
        this.value = this.value ** value;
        return this;
    }
    
    /** 
     * @return {number}
     */
    getResult() {
        return this.value;
    }
}

上一题