波兰式表达式(后缀表达式)求值
#define _CRT_SECURE_NO_WARNINGS 1using namespace std;#include<stdlib.h>#include<iostream>#include<vector>#include<stack>#include<string>//力扣/*题目要求:根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。*//*解题思路:创建一个栈,若是数字则将这个数字压栈,若是符号则将栈顶两个元素取出分别作为左右操作数进行运算后入栈*/class Solution {public: int evalRPN(vector<string>& tokens)//tokens是一个由string类构造的vector { stack <int> s; int left, right; int i = 0; for (i; i<tokens.size(); i++) { string &str = tokens[i];//为了使用方便给定义一个string类的变量str作为tokens中每个元素的引用 if (!("+" == str || "-" == str || "*" == str || "/" == str)) { s.push(atoi(str.c_str()));//将字符类型的变量转化为整型 } else { right = s.top(); s.pop(); left = s.top(); s.pop(); switch (str[0]) { case '+': s.push(left + right); break; case '-': s.push(left - right); break; case '*': s.push(left*right); break; case '/': s.push(left / right); break; } } } return s.top(); }};int main(){ system("pause"); return 0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。