LeetCode---Evaluate Reverse Polish Notation
来源:互联网 发布:传奇账号数据库 编辑:程序博客网 时间:2024/05/29 10:16
第二题:Evaluate Reverse Polish Notation
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +
, -
, *
, /
. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6这个也是一个很常见的题目,不过在做这道题过程中自己还是忽视了几个问题:
(1)输入的字符串中可能含有负数
(2)输入的字符串中算出来可能出现除数是0的情况
接下来就是采取什么样的数据结构来存了,这个都知道应该是用数据结构里的栈,不过在程序里没有用过Stack,所以自己做这个题的时候还是用了Vector。还可能会有更高效的办法,有时间慢慢研究。
这是我写的这个题目的代码(已AC):
class Solution {public:int evalRPN(vector<string> &tokens) {if (tokens.size() <= 0){return 0;}vector<int> vecNum;vecNum.clear();for (int i = 0; i < tokens.size(); i++){if (tokens[i].size()> 0 ){if (tokens[i][0] == '-' && tokens[i].size() > 1){int num = 0;for (int j = 1; j < tokens[i].size(); j++){num = (10*num + tokens[i][j] - '0');}num *= -1;vecNum.push_back(num);}else if (tokens[i][0] >= '0' && tokens[i][0] <= '9'){int num = 0;for (int j = 0; j < tokens[i].size(); j++){num = (10*num + tokens[i][j] - '0');}vecNum.push_back(num);}else if(tokens[i].size()==1 && (tokens[i][0] == '+' || tokens[i][0] == '-' || tokens[i][0] == '*' || tokens[i][0] == '/')){switch (tokens[i][0]){case '+':{int firstnum = vecNum[vecNum.size() - 1];vecNum.pop_back();int secondnum = vecNum[vecNum.size() - 1];vecNum.pop_back();vecNum.push_back(firstnum + secondnum);break;}case '-':{int secondnum = vecNum[vecNum.size() - 1];vecNum.pop_back();int firstnum = vecNum[vecNum.size() - 1];vecNum.pop_back();vecNum.push_back(firstnum - secondnum);break;}case '*':{int firstnum = vecNum[vecNum.size() - 1];vecNum.pop_back();int secondnum = vecNum[vecNum.size() - 1];vecNum.pop_back();vecNum.push_back(firstnum * secondnum);break;}case '/':{int secondnum = vecNum[vecNum.size() - 1];vecNum.pop_back();int firstnum = vecNum[vecNum.size() - 1];vecNum.pop_back();if (secondnum == 0){return 0;}vecNum.push_back(firstnum / secondnum);break;}default:break;}}}}int ret = vecNum[0];return ret;}};
0 0
- Evaluate Reverse Polish Notation | leetcode
- leetcode-Evaluate Reverse Polish Notation
- Leetcode: Evaluate Reverse Polish Notation
- LeetCode - Evaluate Reverse Polish Notation
- LeetCode | Evaluate Reverse Polish Notation
- Leetcode: Evaluate Reverse Polish Notation
- Leetcode: Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation (LeetCode)
- leetcode: Evaluate Reverse Polish Notation
- Leetcode Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation -- LeetCode
- 【LeetCode】Evaluate Reverse Polish Notation
- LeetCode-Evaluate Reverse Polish Notation
- LeetCode:Evaluate Reverse Polish Notation
- LeetCode Evaluate Reverse Polish Notation
- Leetcode:Evaluate Reverse Polish Notation
- LBaas 原理分析
- C 语言复杂声明的理解
- 042:hibernate多对一单向关联(xml)
- systemd的若干理解,相对于susVinit
- 字典树新姿势
- LeetCode---Evaluate Reverse Polish Notation
- 引用和指针的比较
- shell脚本中自动输入密码
- ueditor1.4.3在vs2010项目中,但是发布到iis上却不管用了。
- Jack--10天学会IOS大纲;注意将图片放大观看!
- Android OpenGL ES 开发教程(8):基本几何图形定义
- COCOS2DX中关于labelTTF控件获取不到触摸点的解决办法
- POJ 2288 Islands and Bridges(状态压缩)
- HDU 1398 Square Coins