
Leetcoe224 计算器
发布日期:2022-09-10 02:26:32
浏览次数:5
分类:技术文章
本文共 2047 字,大约阅读时间需要 6 分钟。
class Solution { public: //+-*计算 int func(int a,int b,char op){ if(op=='+') return a+b; else if(op=='-') return a-b; else if(op=='*') return a*b; else return a/b; return 0; } //运算符优先级 int getpriority(char op){ if(op=='+'||op=='-') return 1; else return 2; return 0; } //越界或者遇到左括号返回 vector help(string s,int index){ stack nums;//操作数栈 stackops;//运算符栈 int i=index; while(i ='0'&&s[i]<='9'){ //当前为数字,继续寻找数字,然后将操作数入栈 int cur=0; while(s[i] >= '0' && s[i] <= '9') cur = cur * 10 + (s[i++] - '0'); nums.push(cur); }else if(s[i]!='('){ //当前为运算符,判断优先级 if(nums.empty()&&s[i]=='-'){ nums.push(0); }else if(ops.empty()||getpriority(s[i])>getpriority(ops.top())){ ops.push(s[i++]); }else{ while(!ops.empty()&&getpriority(s[i])<=getpriority(ops.top())){ int num1=nums.top(); nums.pop(); int num2=nums.top(); nums.pop(); char op=ops.top(); ops.pop(); int res=func(num2,num1,op); nums.push(res); } ops.push(s[i++]); } }else{ //遇到左括号,继续递归,将子过程返回的结果压入栈中,当前位置为子过程结束位置的下一个位置 auto res=help(s,i+1); nums.push(res[0]); i=res[1]+1; } } while(!ops.empty()){ int num1=nums.top(); nums.pop(); int num2=nums.top(); nums.pop(); char op=ops.top(); ops.pop(); int res=func(num2,num1,op); nums.push(res); } return { nums.top(),i}; } int calculate(string s) { return help(s,0)[0]; }};
转载地址:https://blog.csdn.net/qq_39240107/article/details/125896733 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2023年09月23日 06时59分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java学习笔记, 不断更新
2019-03-07
手把手教你从零开始用Java写爬虫
2019-03-07
未Root手机如何快速刷步数?小白教程!
2019-03-07
Python读取PDF文档并翻译
2019-03-07
爬虫大数据软件开发中程序员的伦理问题
2019-03-07
Autojs豆瓣小组自动回帖机器人,模拟器可用
2019-03-07
如何使用OpenCV RTMP直播推流
2019-03-07
SpringBoot使用MySQL访问数据
2019-03-07
Scrapy框架新手入门教程
2019-03-07
IPguard外发查看器的设置步骤
2019-03-07
IP-Guard离线申请解密操作流程
2019-03-07
IP-Guard高级认证工程师考试机试环境下载
2019-03-07
IP-Guard准入控制网关实现机制
2019-03-07
IP-Guard加密安全网关安装部署使用手册
2019-03-07
base64与Uin8Array互转实现
2019-03-07
微信小程序点击出现,再次点击隐藏
2019-03-07
uni-app(3)— globalStyle全局配置和页面配置
2019-03-07
uni-app(4)— 配置tabbar
2019-03-07
uni-app(5)— condition启动模式配置
2019-03-07
微信小程序video组件调用腾讯视频的解决方案
2019-03-07