逆波兰式也就是后序算式,计算后序式的基本思想就是用栈,依次遍历数组,遇到数字,压栈,遇到符号,两次弹栈,将弹出的两个操作数做运算,运算后将结果再压栈,最后
在栈顶的就是要计算的结果。
class Solution { public: int Words(vector<string> &tokens) { stack<int> st; for(int i=0;i<tokens.size();i++) { int num1=0,num2=0; switch(atoi(&tokens[i][0])) { case ‘+‘: num1=st.top(); st.pop(); num2=st.top(); st.pop(); st.push(num1+num2); break; case ‘-‘: num1=st.top(); st.pop(); num2=st.top(); st.pop(); st.push(num1-num2); break; case ‘*‘: num1=st.top(); st.pop(); num2=st.top(); st.pop(); st.push(num1*num2); break; case ‘/‘: num1=st.top(); st.pop(); num2=st.top(); st.pop(); st.push(num1/num2); break; default: st.push(atoi(&tokens[i][0])); } } return st.top(); } };
Evaluate Reverse Polish Notation,布布扣,bubuko.com
Evaluate Reverse Polish Notation
原文:http://www.cnblogs.com/ZhangYushuang/p/3677373.html