news 2026/5/9 10:59:44

LeetCode 基本计算器题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 基本计算器题解

LeetCode 基本计算器题解

题目描述

实现一个基本的计算器来计算一个简单的字符串表达式s的值。

示例

输入:s = "1 + 1"
输出:2

输入:s = "(1+(4+5+2)-3)+(6+8)"
输出:23

解题思路

方法:栈

思路

  • 使用栈来解决这个问题。
  • 遍历字符串,对于每个字符:
    • 如果是数字,累积计算当前数字。
    • 如果是运算符(+、-),将当前数字和运算符压入栈,然后重置当前数字。
    • 如果是左括号,将当前结果和运算符压入栈,然后重置当前结果和运算符。
    • 如果是右括号,弹出栈顶的运算符和结果,进行计算。
  • 最后将栈中的所有元素相加。

复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串的长度。每个字符最多被访问一次。
  • 空间复杂度:O(n),最坏情况下需要存储所有的元素。

代码实现

方法:栈

# 基本计算器(栈) def calculate(s): stack = [] result = 0 num = 0 sign = 1 # 1 表示正数,-1 表示负数 for char in s: if char.isdigit(): num = num * 10 + int(char) elif char == '+': result += sign * num num = 0 sign = 1 elif char == '-': result += sign * num num = 0 sign = -1 elif char == '(': # 将当前结果和符号压入栈 stack.append(result) stack.append(sign) # 重置结果和符号 result = 0 sign = 1 elif char == ')': # 先计算当前括号内的结果 result += sign * num num = 0 # 弹出符号和之前的结果 sign = stack.pop() prev_result = stack.pop() result = prev_result + sign * result # 加上最后一个数字 result += sign * num return result # 测试 def test_calculate(): print(calculate("1 + 1")) # 输出:2 print(calculate("(1+(4+5+2)-3)+(6+8)")) # 输出:23 if __name__ == "__main__": test_calculate()

测试用例

测试用例 1:基本情况

输入:s = "1 + 1"
输出:2

测试用例 2:带括号

输入:s = "(1+(4+5+2)-3)+(6+8)"
输出:23

总结

基本计算器是一个经典的栈问题,它可以通过栈来高效地解决。

栈的核心思想是:使用栈来保存括号前的结果和符号,当遇到右括号时,弹出栈中的元素进行计算。

掌握栈的使用方法,对于解决类似的问题非常重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 1:03:49

动态本体论中的关系更接近人类的理解

动态本体论之所以被认为更接近人类的理解,是因为它打破了传统静态、孤立的“实体主义”视角,还原了我们真实感知世界的方式。我们可以从以下几个维度来深入理解为什么“关系”才是人类认知的本质:1. 人的存在本身就是关系性的(存在…

作者头像 李华
网站建设 2026/5/7 1:02:39

BilibiliDown:一站式B站视频下载解决方案,轻松保存高清内容到本地

BilibiliDown:一站式B站视频下载解决方案,轻松保存高清内容到本地 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gi…

作者头像 李华
网站建设 2026/5/7 1:02:38

IDA反编译疑难杂症

1. call analysis failed 查看函数参数 压入两个参数,但实际分析时它却只有一个 对该函数按’y’键,将其参数修改为两个,去掉三个即可 2. too big function 修改配置文件IDA 7.0\cfg\hexrays.cfg

作者头像 李华
网站建设 2026/5/7 1:02:29

Prompt Master:精准提示词生成技能,让AI一次听懂你的需求

1. 项目概述:Prompt Master,一个为Claude设计的精准提示词生成技能如果你和我一样,每天都在和各种AI工具打交道——从Claude、ChatGPT写代码,到Midjourney、Stable Diffusion画图,再到Cursor、GitHub Copilot辅助开发—…

作者头像 李华