波兰式(后缀表达式求解)"/>
LeetCode 的 C++ 实现(二) 逆波兰式(后缀表达式求解)
解题思路
根据后缀表达式概念,借助栈,不断将字符入栈,当碰到当前字符是运算符,就将已入栈的左右数值弹出,求得结果后,将结果入栈
class Solution {
public:int evalRPN(vector<string> &tokens) {if(tokens.size() == 0)return 0;stack<int> result;for(auto token : tokens){if(token == "+" || token == "-" || token == "*" || token == "/"){if(result.size() < 2)return 0;int right = result.top();result.pop();int left = result.top();result.pop();int res = 0;if(token == "+")res = left+right;else if(token == "-")res = left-right;else if(token == "*")res = left*right;else if(token == "/")res = left/right;result.push(res);}else{stringstream ss;ss << token;int res;ss >> res;result.push(res);//result.push(atoi(token.c_str()));}}return result.top();}
};
更多推荐
LeetCode 的 C++ 实现(二) 逆波兰式(后缀表达式求解)
发布评论