#define _CRT_SECURE_NO_WARNINGS 1
using 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;
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。