当前位置: 首页 > news >正文

算法训练营Day21|基本计算器 II

题目链接:https://leetcode.cn/problems/basic-calculator-ii/description/

优秀题解:https://leetcode.cn/problems/basic-calculator-ii/solutions/91271/chai-jie-fu-za-wen-ti-shi-xian-yi-ge-wan-zheng-ji-/


题目理解

  • 给定一个字符串表达式s,包含整数和运算符+-*/

  • 表达式中的整数都是非负整数

  • 计算表达式的结果

  • 运算符优先级:乘除优先于加减

  • 没有括号

  • 表达式中的空格需要忽略


第一想法

思路:栈

核心思想:遇到加减法,将数字(带符号)压入栈;遇到乘除法,立即计算

  • 遍历字符串,解析数字和运算符

  • char变量记录当前数字前的运算符

  • 遇到数字时,根据前一个运算符决定操作:

    • +:数字直接入栈

    • -:数字的相反数入栈

    • *:弹出栈顶 → 与当前数字相乘 → 结果入栈

    • /:弹出栈顶 → 除以当前数字(向零截断)→ 结果入栈

  • 最后将栈中所有数字相加


C++实现

class Solution { public: int calculate(string s) { stack<int> st; char sign = '+'; long long num = 0; for (int i = 0; i < s.length(); i++) { char c = s[i]; if (isdigit(c)) { num = num * 10 + (c - '0'); } if ((!isdigit(c) && c != ' ') || i == s.length() - 1) { if (sign == '+') { st.push(num); } else if (sign == '-') { st.push(-num); } else if (sign == '*') { int top = st.top(); st.pop(); st.push(top * num); } else if (sign == '/') { int top = st.top(); st.pop(); st.push(top / num); } sign = c; num = 0; } } int result = 0; while (!st.empty()) { result += st.top(); st.pop(); } return result ; } };

易错提醒

  • 忘记处理多位数字(num = num*10 + digit

  • 到达字符串末尾时需要处理最后一个数

http://www.jsqmd.com/news/735298/

相关文章:

  • 从0x80000000到0x80200000:手把手教你用Python脚本自动计算内存段大小
  • YOLOv8训练避坑指南:手把手教你正确配置Mosaic增强参数(附效果对比图)
  • Equalizer APO终极指南:如何免费解锁Windows音频系统的完整潜力?
  • VSCode 2026 Agent协同协议详解:WebSocket+gRPC+JSON-RPC三协议选型对比,实测延迟降低67.3%
  • 5分钟快速上手LizzieYzy:免费围棋AI助手的终极指南
  • ZenlessZoneZero-OneDragon:高效解放双手的绝区零全自动游戏助手
  • 3个技巧让macOS窗口管理效率翻倍:Easy-Move-Resize终极指南
  • 拒绝编程,dataC工作量+AI数据采集:大模型识别图片
  • 基于OpenAI Function Calling的LLM工具与智能体开发实践
  • 2026年GEO搜索优化哪家强:成都GEO企业服务、成都GEO优化、成都GEO信源搭建、成都GEO全域营销、成都GEO合规优化选择指南 - 优质品牌商家
  • 手把手教你用RealSense L515获取相机内参,并生成ORB-SLAM2可用的YAML配置文件
  • Chaterm:终端AI助手部署与高效使用指南
  • 2026最权威的六大降AI率网站实际效果
  • QQ截图独立版:Windows平台高效截图与OCR识别工具完全指南
  • DiT架构在视频生成中的创新应用与实战解析
  • 2026年幸福家庭疗愈机构专业度评测与TOP推荐:心泉导师、心泉幸福家庭、心泉教育学员评价、心泉教育幸福家庭、心泉老师大爱选择指南 - 优质品牌商家
  • 使用Taotoken为Claude Code配置稳定API连接与模型选择
  • 夏季汗渍为什么洗完还会有闷味?
  • 第8篇:Vibe Coding时代:FastAPI 部署 LangGraph Agent 实战,把本地 Demo 变成可调用服务
  • 为什么你的团队还在用VS Live Share?VSCode 2026原生协作已支持离线变更同步、断网重连自动合并——实测对比报告
  • 2026年第二十三届五一数学建模竞赛-A题 煤矿巷道支护问题
  • Windows系统优化终极指南:WinUtil一站式解决方案
  • Arm架构直线推测漏洞解析与防护方案
  • Arm Cortex-A65调试架构与性能优化实战
  • 饥荒联机版私服搭建教程(Linux)
  • 5步完整破解方案:Cursor Pro永久免费使用终极指南
  • Cortex-A715核心寄存器架构与性能优化实战
  • Windows 10/11 下保姆级搭建Superset 3.0二次开发环境(含Python 3.10 + Node 16 避坑指南)
  • Windows系统缺少concrt140.dll文件无法启动程序解决
  • 【2026工业AIoT准入红线】:MCP新标强制要求的12项实时性/安全性指标,92%产线系统尚未达标!