每天一道LeetCode-----后缀表达式求值
生活随笔
收集整理的這篇文章主要介紹了
每天一道LeetCode-----后缀表达式求值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Evaluate Reverse Polish Notation
原題鏈接Evaluate Reverse Polish Notation
后綴表達式求值,用棧即可
代碼如下
class Solution { public:int evalRPN(vector<string>& tokens) {unordered_map<string, std::function<int(int, int)>> opMap;opMap["+"] = [](int a, int b) { return a + b; };opMap["-"] = [](int a, int b) { return a - b; };opMap["*"] = [](int a, int b) { return a * b; };opMap["/"] = [](int a, int b) { return a / b; };stack<int> s;for(auto& token : tokens){auto p = tryConvertToInt(token);if(p.second)s.push(p.first);else{int b = s.top();s.pop();int a = s.top();s.pop();s.push(opMap[token](a, b));}}return s.top();} private:std::pair<int, bool> tryConvertToInt(const string& token){int n = 0;int res = ::sscanf(token.c_str(), "%d", &n);if(res == 0)return std::make_pair(n, false);elsereturn std::make_pair(n, true);} };總結
以上是生活随笔為你收集整理的每天一道LeetCode-----后缀表达式求值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 每天一道LeetCode-----平面上
- 下一篇: C++11学习笔记-----线程库std