首页 > 代码库 > leetcode[150] Evaluate Reverse Polish Notation
leetcode[150] Evaluate Reverse Polish Notation
逆波兰表示法,在维基百科here
一不小心就看到了维基上有说用栈处理。然后就用栈处理了。
需要注意的是,操作数前后不要弄错,stoi可以调用。它应该是在stdlib.h的头文件里,不过我在codeblock上试了不行。
class Solution {public: int evalRPN(vector<string> &tokens) { int size = tokens.size(); if (size == 0) return 0; stack<int> sta; for (int i = 0; i < size; i++) { if (isdigit(tokens[i][0]) || tokens[i].size() > 1) sta.push(stoi(tokens[i])); else { int op1 = sta.top(); sta.pop(); int op2 = sta.top(); sta.pop(); switch(tokens[i][0]) { case ‘+‘: sta.push(op1 + op2); break; case ‘-‘: sta.push(op2 - op1); break; case ‘*‘: sta.push(op1 * op2); break; case ‘/‘: sta.push(op2 / op1); break; } } } return sta.top(); }};
如果自己实现stoi的话:
int stoi150(string s) { int flag = 1; if (s[0] == ‘-‘) { flag = -1; s = s.substr(1); } else if (s[0] == ‘+‘) { s = s.substr(1); } int size = s.size(), ans = 0; for (int i = 0; i < size; i++) { ans = 10 * ans + (s[i] - ‘0‘); } return flag * ans; }
leetcode[150] Evaluate Reverse Polish Notation
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。