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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 7个月宝宝呕吐是怎么办 一个月婴儿粘人怎么办 八个月小孩粘人怎么办 一岁的宝宝粘人怎么办 六个月宝宝粘人爱哭怎么办 摔伤结巴里面灌脓了怎么办 两周半的宝宝说话结巴怎么办 孩子两周说话结巴怎么办 名字取了生僻字考大学怎么办 淘宝客服一直不说话怎么办 淘宝客服不说话也不发货怎么办 面对不说话的客人怎么办? 卖家客服不回复怎么办 2周小孩说话结巴怎么办 微信群里只领红包不说话的人怎么办 躺在微信不说话的客户怎么办 9岁儿童说话结巴怎么办 5岁儿童说话结巴怎么办 京东客服不说话怎么办 两岁宝宝说话有点结巴怎么办 孩子不敢跟外人说话怎么办? 孩子不爱跟外人说话怎么办 别人说我不说话怎么办 衣服屁股那块变亮怎么办 小孩家里说话外面不说话怎么办 2个月小宝宝便秘怎么办 3个月小宝宝便秘怎么办 微信客户不说话怎么办 一岁半宝宝便秘肛裂怎么办 网恋现在都不说话了怎么办 宝宝便秘四天了怎么办 月子里小孩吐奶怎么办 月子里的小孩吐奶怎么办 婴儿吃多了吐奶怎么办 20个月孩子便秘怎么办 一岁宝宝肛裂怎么办 婴儿吃饱了吐奶怎么办 23天新生儿吐奶怎么办 婴儿吐奶舌苔白怎么办 宝宝吐奶酸臭味怎么办? 1周岁吐奶有酸味怎么办