题目:给你一串运算字符串,只包含±*/,要求能算出结果
思路:定义一些规则就能够计算,首先定义2个计算栈,然后定义符号的优先级,±符号为1, */符号为2。
规则:
1.当遇到 ‘(’ 的时候,直接压入符号栈中;
2.当遇上数字,直接压入数字栈中;
3.当碰上 ‘) ’ 的时候,一直计算到弹出 ’(’ 为止;
4.碰上的是计算符号的时候,如果当前的符号的优先级小于等于栈顶的符号优先级,直接计算符号栈栈顶符号后将当前运算符压入栈中;否则直接压入栈中。
代码如下:
class Solution {
public:
stack<int> num;
stack<char> ops;
unordered_map<char, int> priority;
void eval(){
auto b = num.top();num.pop();
auto a = num.top();num.pop();
auto c =</