Skip to content

224. 基本计算器 ​

  • 题号:224
  • 来源:LeetCode
  • 难度:困难
  • 标签:栈 数学 字符串
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · O(n) 时间 · O(n) 空间 · 更新于 2026-09-27

栈保存括号外的结果与符号,处理多位数

typescript
/**
 * @difficulty hard
 * @tags 栈,数学,字符串
 * @time O(n)
 * @space O(n)
 * @note 栈保存括号外的结果与符号,处理多位数
 * @224. 基本计算器
 */
/**
 * @param {string} s
 * @return {number}
 */
var calculate = function(s: string): number {
s=s.trim()
 let stack:number[]=[]
 let num=0
 let res=0
 let signal=1
 for(let i=0;i<s.length;i++){
    if(s[i]>='0'&&s[i]<='9'){
        //处理多位数
        num=num*10+(+s[i])
    }else if(s[i]==='+'){
        res=signal*num+res
        num=0
        signal=1

    }else if(s[i]==='-'){
        res=res+signal*num
        num=0
        signal=-1
    }else if(s[i]==='('){
        // 入栈顺序
        stack.push(res)
        stack.push(signal)

        res=0
        signal=1
    }else if(s[i]===')'){
        res=res+signal*num
        num=0
        res=stack.pop()!*res
        res=stack.pop()!+res
    }
 }

return res+signal*num

//  if(!(s[s.length-1]===')')){

//     return res+(+s[s.length-1])

//  }else{
//     return res
//  }
};

console.log(calculate(" 22 111"))

源码:ts/leetcode/224. 基本计算器.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm