逆波兰表达式求值(Evaluate Reverse Polish Notation)

来源:互联网 发布:ida pro 7.0 mac 编辑:程序博客网 时间:2024/05/17 07:17

问题描述:

逆波兰表达式求值,经典问题。


思路:

遇到数字入栈,遇到符号取栈顶的两个元素出来,再将结果入栈,最后栈里剩下的元素就是结果了。


实现代码:

class Solution {public:    int evalRPN(vector<string>& tokens) {        stack<int> st;        for(auto &s:tokens){            if(s.length()>1 || isdigit(s[0])) st.push(stoi(s));            else{                int num1=st.top(); st.pop();                int num2=st.top(); st.pop();                if(s[0]=='+') num2+=num1;                if(s[0]=='-') num2-=num1;                if(s[0]=='*') num2*=num1;                if(s[0]=='/') num2/=num1;                st.push(num2);            }        }        return st.top();    }};

0 0
原创粉丝点击