#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;
}
當前題目:波蘭式表達式(后綴表達式)求值
網址分享:http://vcdvsql.cn/article6/iijhog.html
成都網站建設公司_創新互聯,為您提供微信公眾號、、軟件開發、虛擬主機、企業建站、動態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯