leetcode如何实现基本计算器
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关leetcode如何实现基本计算器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、题目内容实现一个基本的计算器来计算一个简单的字符串表达式 s
千家信息网最后更新 2026年11月02日leetcode如何实现基本计算器
这篇文章给大家分享的是有关leetcode如何实现基本计算器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、题目内容
实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。
示例 1:
输入:s = "1 + 1"
输出:2
示例 2:
输入:s = " 2-1 + 2 "
输出:3
示例 3:
输入:s = "(1+(4+5+2)-3)+(6+8)"
输出:23
提示:
1 <= s.length <= 3 * 10^5
s 由数字、'+'、'-'、'('、')'、和 ' ' 组成
s 表示一个有效的表达式
二、解题思路
用栈来做,当遇到左括号时,存入之前的计算结果,再存入一个flag为1;
如果遇到右括号,则出栈flag为1并乘以当前括号内的计算结果,然后再加上出栈的之前的计算结果;
遇到数字,就计算与之后数字的构成的二位数,否则乘以 flag并与之前的计算结果相加更新计算结果;
三、代码
class Solution: def calculate(self, s: str) -> int: stack = [] res = 0 flag = 1 i = 0 while i < len(s): if s[i] == '+': flag = 1 elif s[i] == '-': flag = -1 elif s[i] == '(': stack.append(res) res = 0 stack.append(flag) flag = 1 elif s[i] == ')': res = stack.pop() * res + stack.pop() elif s[i].isdigit(): s_num = ord(s[i]) - ord('0') while i + 1 < len(s): if s[i + 1].isdigit(): s_num = s_num * 10 + ord(s[i + 1]) - ord('0') i += 1 else: break res = res + flag * s_num i += 1 return resif __name__ == '__main__': ss = Solution() s = "(1+(4+5+2)-3)+(6+8)" # s = "2147483647" # s = "1 + 1" ans = ss.calculate(s) print(ans)感谢各位的阅读!关于"leetcode如何实现基本计算器"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
结果
计算器
内容
括号
数字
示例
输入
输出
更多
篇文章
表达式
不错
实用
有效
代码
位数
字符
字符串
思路
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技有限公司
伟宏互联网科技
互联网科技产业
互联网科技工作委员会毛军
科技平台互联网
互联网科技公司的优势
今日互联网科技
互联网电商科技
互联网中国科技
科技服务与互联网
深圳互联网络科技有限公司
上游互联网科技
互联网前沿科技
深圳卡尔迅互联网科技有限公司怎么样
玖二柒互联网科技公司待遇
互联网科技教育视频
岳阳华臻互联网科技有限公司
华夏互联网科技业
易企秀互联网科技是做什么的
互联网金融运营模式中的金融科技
广州淘业互联网络科技
西安纸贵互联网科技有限公司
中关村互联网 科技集团
新华互联网科技学院
深圳期待互联网科技
镁科技互联网资讯平台
杭州壁岐互联网科技有限公司
互联网科技如何创业
沐思想互联网科技有限公司
悟空问答互联网科技