Leetcode Basic Calculator II
来源:互联网 发布:舆情监测软件价格 编辑:程序博客网 时间:2024/05/12 01:31
题意:设计一个计算器,实现四则运算。
思路:顺序处理,先处理乘除运算,再处理加减运算。注意最后一个数字及运算的处理。
class Solution {public: int calculate(string s) { stack<int> addnumber; stack<char> addop; string tempnum = ""; char preop = '+'; for(int i = 0; i < s.length(); ++ i) { if(s[i] == ' ') continue; if(s[i] >= '0' && s[i] <= '9') { tempnum += s[i]; } else { int num = std::stoi(tempnum); tempnum = ""; if(preop == '*' || preop == '/') { int tempnum = addnumber.top(); addnumber.pop(); if(preop == '*') addnumber.push(tempnum * num); if(preop == '/') addnumber.push(tempnum / num); preop = s[i]; if(s[i] == '-' || s[i] == '+') addop.push(s[i]); continue; } preop = s[i]; if(s[i] == '-' || s[i] == '+') addop.push(s[i]); addnumber.push(num); } } if(preop == '*') { int num1 = addnumber.top(); addnumber.pop(); int num2 = std::stoi(tempnum); addnumber.push(num1 * num2); } else if(preop == '/') { int num1 = addnumber.top(); addnumber.pop(); int num2 = std::stoi(tempnum); addnumber.push(num1 / num2); } else addnumber.push(std::stoi(tempnum)); // add stack<int> readdnumber; while(!addnumber.empty()) { readdnumber.push(addnumber.top()); addnumber.pop(); } stack<char> readdop; while(!addop.empty()) { readdop.push(addop.top()); addop.pop(); } int re = readdnumber.top(); readdnumber.pop(); while(!readdnumber.empty()) { int num = readdnumber.top(); readdnumber.pop(); char op = readdop.top(); readdop.pop(); if(op == '-') re = re - num; if(op == '+') re = re + num; } return re; } };
0 0
- [LeetCode] Basic Calculator II
- [leetcode] Basic Calculator II
- leetcode Basic Calculator II
- 【LeetCode】Basic Calculator II
- [Leetcode]Basic Calculator II
- LeetCode Basic Calculator II
- [Leetcode]Basic Calculator II
- leetcode:Basic Calculator II
- leetcode:Basic Calculator II
- Basic Calculator II -- leetcode
- *LeetCode-Basic Calculator II
- leetcode:Basic Calculator II
- LeetCode -- Basic Calculator II
- 《leetCode》:Basic Calculator II
- 【Leetcode】Basic Calculator II
- LeetCode:Basic Calculator II
- leetcode Basic Calculator II
- Leetcode Basic Calculator II
- Git/Github学习
- (1)版本控制工具之Git
- eclipse git 上下箭头表示什么
- 面试--金融支付(75)
- SVN上传项目.a文件上传不了
- Leetcode Basic Calculator II
- fedora23汉语输入法设置
- hash 中ASL 和不成功ASL的计算
- Leetcode 202. Happy Number
- STM32F4与STM32F1的区别
- linux 下多个memcache服务
- spring配置静态资源文件放到war包外的指定目录
- stm32 SPI NSS引脚的使用配置
- linux美化窗口