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"))在 GitHub 上查看题目所在目录:lmliheng/algorithm