LeetCode NO.150 cpp (5.3)

标签:栈

NO.150 逆波兰表达式求值
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int str2num(string s) 
    {   
        int num;
        stringstream ss(s);
        ss>>num;
        return num;
    }
    int evalRPN(vector<string>& tokens) {
        stack <int> s;
        int n = tokens.size();
        int ans;
        if(tokens[0] != "+" && tokens[0] != "-" && tokens[0] != "*" && tokens[0] != "/") 
            ans = str2num(tokens[0]);
        for(int i = 0; i <= n - 1 ; ++i) 
        {
            if(tokens[i] == "+")
            {
                int right = s.top();
                s.pop();
                int left = s.top();
                s.pop();
                ans = left + right;
                s.push(ans);
            }
            else if(tokens[i] == "-")
            {
                int right = s.top();
                s.pop();
                int left = s.top();
                s.pop();
                ans = left - right;
                s.push(ans);
            }
            else if(tokens[i] == "*")
            {
                int right = s.top();
                s.pop();
                int left = s.top();
                s.pop();
                ans = left * right;
                s.push(ans);
            }
            else if(tokens[i] == "/")
            {
                int right = s.top();
                s.pop();
                int left = s.top();
                s.pop();
                ans = left / right;
                s.push(ans);
            }
            else
            {
                int r = str2num(tokens[i]); 
                s.push(r);
            }
        }
        return ans;
    }
};

在这里插入图片描述

发布了15 篇原创文章 · 获赞 0 · 访问量 433

猜你喜欢

转载自blog.csdn.net/weixin_45438011/article/details/105036997
5.3
cpp