LeetCode之Basic Calculator II
来源:互联网 发布:java圆类返回值 编辑:程序博客网 时间:2024/05/21 18:36
/*用两个辅助vector来进行运算,一个存符号,一个存数字。*/class Solution {public: int calculate(string s) { if(s.empty()) return 0; vector<char> op; vector<int> num; for(size_t i = 0; i < s.size();){ if(s[i] >= '0' && s[i] <= '9'){//遍历到数字 int tmp = 0; while(i < s.size() && s[i] >= '0' && s[i] <= '9'){ tmp = tmp * 10 + (s[i] - '0'); ++i; } if(!op.empty() && (op.back() == '*' || op.back() == '/')){ int a = num.back(); num.pop_back(); num.push_back(calculate(a, tmp, op.back())); op.pop_back(); } else num.push_back(tmp); } else if(s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/'){//遇到号,入栈 op.push_back(s[i]); ++i; } else ++i; } size_t j = 0; for(size_t i = 0; i < op.size(); ++i){ num[j+1] = calculate(num[j], num[j+1], op[i]); ++j; } return num.back(); } int calculate(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; }};
0 0
- Leetcode之Basic Calculator & 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
- [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
- 六年软件测试感悟 (续二)
- Hibernate – One-to-One example (XML Mapping)
- 详解Http Https
- android EditText长按屏蔽ActionMode context菜单但保留选择工具功能
- 三分钟理解Java中字符串(String)的存储和赋值原理
- LeetCode之Basic Calculator II
- curl 命令
- 通用拦截器
- mybatis foreach 熟悉
- 提高xcode的编译运行速度的方法
- Eclipse 连接MySQl数据库总结
- 12个有趣的C语言面试题及答案
- String中new String(byte[] b, int n, int m)的理解
- Algorithms—81.Search in Rotated Sorted Array II