leetcode如何实现基本计算器
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章给大家分享的是有关leetcode如何实现基本计算器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、题目内容实现一个基本的计算器来计算一个简单的字符串表达式 s
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
无锡品质网络技术服务价格
针对国家网络安全
青少年维护网络安全的例子
史上最先进数据库
校招软件开发面试官如何提问
app应用网络安全检查工具
常见网络安全管理技术
谷歌服务器 在哪
发送服务器smtp
软件开发外包公司北京
财务软件开发下载
Ubuntu安装数据库问题
谷歌地图怎么提示服务器错误呢
永久免费vps服务器
access数据库操作
网络安全管理教育
三菱plc如何跟服务器通信
万象主机数据库下载
天谕俄罗斯服务器
mq 服务器推荐
互联网金融科技股票龙头
黑海网络技术处是真的吗
操作系统服务器和操作系统区别
2020最强大的微型数据库
天线二维测试软件开发
江苏常见软件开发价格大全
天涯明月刀剑怎么切换服务器
类似服务器的游戏软件
竖表 横表 数据库
台州网络安全招聘