Evaluate Reverse Polish Notation 逆波兰表达式

来源:互联网 发布:怎么惩罚淘宝卖家 编辑:程序博客网 时间:2024/05/16 12:37
class Solution {
public:
    int stringtoint(string s)
    {
        int ret=0;
        for(int i=isdigit(s[0])?0:1;i<s.size();i++)
        {
           ret=ret*10+s[i]-'0';
        }
        return isdigit(s[0])?ret:-ret;
    }
    int evalRPN(vector<string> &tokens) {
        stack<int> st;
        for(int i=0;i<tokens.size();i++)
        {
            if(isdigit(tokens[i][0])||isdigit(tokens[i][1]))
            {
            st.push(stringtoint(tokens[i]));
            }
            else
            {
                int a=st.top();
                st.pop();
                int b=st.top();
                st.pop();
                if(tokens[i]=="+")
                st.push(b+a);
                if(tokens[i]=="-")
                st.push(b-a);
                if(tokens[i]=="*")
                st.push(b*a);
                if(tokens[i]=="/")
                st.push(b/a);
            }
            
        }
        return st.top();
    }
};
0 0