leetcode如何实现基本计算器
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家分享的是有关leetcode如何实现基本计算器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、题目内容实现一个基本的计算器来计算一个简单的字符串表达式 s
千家信息网最后更新 2025年12月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安全错误
数据库的锁怎样保障安全
数据库安全配置的说法
网络安全面临四个威胁
国产安全数据库 下载
华为软件开发笔试2021
成都软件开发培训班靠谱吗
数码互联网科技
web服务器调用url地址
青岛存储服务器哪家是专业做的
怎么把学生管理系统连接到数据库
数据库连接被污染
笔记本连接服务器连接管理口
打印服务器 集群
港股软件开发搭建一般收费
软件开发c还是c
大专学软件开发好学吗
我的世界服务器信号有红叉
计算机网络技术里面有什么专业
怎么删除mariadb数据库
云和数据库云
河南省运波网络技术有限公司
贝壳找房网络技术有限公司
服务器端口5328怎么打开
密云区大型软件开发怎么样
设置联想服务器管理接口
加强网络安全监测预警
临汾软件开发厂家报价
腾讯深耕网络安全
be服务器未连接
获取数据库的数据
平面设计软件开发哪个好学