面试经典 150 题 4 —(栈)— 150. 逆波兰表达式求值

150. 逆波兰表达式求值

面试经典 150 题 4 —(栈)— 150. 逆波兰表达式求值_第1张图片

方法
class Solution {
public:
    int evalRPN(vector<string>& tokens) {
        stack<int> nums;
        int result = 0;
        for(string token : tokens){
            // 如果token是数字,那么最后一位一定是数字,但是第一位可能是符号,所以不能用token[0]进行判断
            if(isdigit(token.back())){
                // string 转换 int, stoi(token)或atoi(token.c_str())
                nums.push(stoi(token));
            }
            else{
                int back = nums.top();
                nums.pop();
                int front = nums.top();
                nums.pop();

                switch(token[0]){
                    case '+':
                        result = front + back;
                        break;
                    case '-':
                        result = front - back;
                        break;
                    case '*':
                        result = front * back;
                        break;
                    case '/':
                        result = front / back;
                        break;
                }

                nums.push(result);
            }
        }
        return nums.top();
    }
};

你可能感兴趣的:(leetcode,面试,c++,leetcode)