leetcode 日经贴,Cpp code -Basic Calculator
来源:互联网 发布:手机淘宝详情页怎么弄 编辑:程序博客网 时间:2024/06/05 21:15
Basic Calculator
class Solution {private: char token; int pos, num; stack<char> ops; stack<int> vals; int getpriority(char op) { int ret = 0; switch(op) { case '(': ret = 4; break; case '+': case '-': ret = 2; break; case ')': ret = 1; break; case 'd': ret = 0; break; default: ret = -1; break; } return ret; } void next_token(const string &s) { while (pos < s.length() && s[pos] == ' ') { ++pos; } if (pos >= s.length()) { token = '$'; } else if (s[pos] < '0' || s[pos] > '9') { token = s[pos]; ++pos; } else { token = 'd'; num = 0; while (pos < s.length() && s[pos] >= '0' && s[pos] <= '9') { num = num * 10 + int(s[pos++] - '0'); } } }public: int calculate(string s) { while (!ops.empty()) { ops.pop(); } while (!vals.empty()) { vals.pop(); } pos = 0; int ans; while (true) { next_token(s); if (token == 'd') { vals.push(num); } else if (token == '$') { if (!vals.empty()) { int a = vals.top(); vals.pop(); while (!ops.empty()) { int b = vals.top(); vals.pop(); char ch = ops.top(); ops.pop(); if (ch == '+') { a += b; } else { a = b - a; } } ans = a; } break; } else { while (!ops.empty() && getpriority(ops.top()) >= getpriority(token)) { char ch = ops.top(); if ((ch == '+' || ch == '-') && !vals.empty()) { int a = vals.top(); vals.pop(); if (vals.empty()) { vals.push(a); break; } int b = vals.top(); vals.pop(); ops.pop(); if (ch == '+') { vals.push(a + b); } else { vals.push(b - a); } } else { break; } } if (token == ')') { ops.pop(); } else { ops.push(token); } } } return ans; }};
0 0
- leetcode 日经贴,Cpp code -Basic Calculator
- leetcode 日经贴,Cpp code -Basic Calculator
- 【LeetCode】Basic Calculator && Basic Calculator II
- LeetCode - Basic Calculator & Basic Calculator II
- Leetcode之Basic Calculator & Basic Calculator II
- [leetcode] Basic Calculator
- Basic Calculator - LeetCode 224
- LeetCode Basic Calculator
- leetcode:Basic Calculator
- [leetcode][math] Basic Calculator
- [LeetCode] Basic Calculator
- Leetcode 224: Basic Calculator
- leetcode 224 Basic Calculator
- [LeetCode] Basic Calculator II
- [leetcode] Basic Calculator II
- [Leetcode] Basic Calculator
- leetcode Basic Calculator
- leetcode Basic Calculator II
- "server tomcat v8.0 server at localhost failed to start"+"A child container failed during start"
- cocos3.3 响应Android的Menu键和Back键
- Android--UI之Spinner
- 20150611_OC之数组NSMutableArray中函数操作
- OOAD 学习笔记 八
- leetcode 日经贴,Cpp code -Basic Calculator
- integrated dev into product env.
- WPF Theme Editor新建主题报错的解决方法
- 在做产品时,需要谨慎处理哪些问题~
- 黑马程序员——java基础-泛型和集合框架工具类
- 页式内存管理
- 常用的机器学习&数据挖掘知识点
- IOS键盘类型
- 诸葛管理:怎么才能快速提升执行力