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

【C++算法】67.栈_基本计算器 II

文章目录

    • 题目链接:
    • 题目描述:
    • 解法
    • C++ 算法代码:


题目链接:

227. 基本计算器 II


题目描述:

9f827b257fbd810f89858495b397c72d


解法

表达式求值,一般是用栈来模拟计算过程。


C++ 算法代码:

class Solution 
{
public:int calculate(string s) {// 简单计算器算法// 基本思路:使用栈处理表达式,遵循运算符优先级规则vector<int> st; // 用数组来模拟栈结构,存储操作数和计算结果int i = 0, n = s.size(); // i是当前处理的位置,n是字符串长度char op = '+'; // 初始运算符设为加号,用于处理第一个数while(i < n){if(s[i] == ' ') i++; // 跳过空格else if(s[i] >= '0' && s[i] <= '9') // 遇到数字{// 提取完整的多位数字int tmp = 0;while(i < n && s[i] >= '0' && s[i] <= '9') tmp = tmp * 10 + (s[i++] - '0');// 根据之前的运算符进行相应操作if(op == '+') st.push_back(tmp); // 加法:将数字入栈else if(op == '-') st.push_back(-tmp); // 减法:将负数入栈else if(op == '*') st.back() *= tmp; // 乘法:将栈顶元素与当前数相乘else st.back() /= tmp; // 除法:将栈顶元素除以当前数}else // 遇到运算符{op = s[i]; // 记录当前运算符,用于处理下一个数i++;}}// 计算最终结果:将栈中所有数相加int ret = 0;for(auto x : st) ret += x;return ret;}
};
http://www.xdnf.cn/news/349.html

相关文章:

  • IntelliJ IDEA右键快捷方式设置方法
  • 从 LabelImg 到 Label Studio!AI 数据标注神器升级,Web 版真香
  • 8 编程笔记全攻略:Markdown 语法精讲、Typora 编辑器全指南(含安装激活、基础配置、快捷键详解、使用技巧)
  • VsCode搭建
  • Spring Boot + Caffeine:打造高性能缓存解决方案
  • 2.凸包优化求解
  • Viewer.js的使用方法
  • JDBC 数据库连接全解析:从驱动配置到工具类封装
  • yolov8的数据处理lableimg的安装以及使用
  • 黑马商城(五)微服务保护和分布式事务
  • 【Linux篇】探索进程间通信:如何使用匿名管道构建高效的进程池
  • PHP实现简单的爬虫功能
  • 不规则曲面上两点距离求取
  • Replicate Python client
  • 中间件--ClickHouse-12--案例-1-日志分析和监控
  • Datawhale AI春训营学习笔记
  • 吴恩达强化学习复盘(2)K-Means初始化|K的选择|算法优化
  • 基于模板匹配的信用卡号码识别系统
  • Fastdata极数:全球AR/VR行业发展趋势报告2025
  • C#.net core部署IIS
  • 【愚公系列】《Python网络爬虫从入门到精通》056-Scrapy_Redis分布式爬虫(Scrapy-Redis 模块)
  • ai学习中收藏网址【1】
  • Nginx 文件上传大小限制及 `client_max_body_size` 最大值详解
  • C++ 基于多设计模式下的同步异步⽇志系统-1准备工作
  • 数据库表设计
  • C 语 言 --- 指 针 4(习 题)
  • 【java实现+4种变体完整例子】排序算法中【选择排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • 企业网站安装 SSL安装的必要性
  • Nvidia显卡架构演进
  • Shiro-550 动调分析与密钥正确性判断