#define _CRT_SECURE_NO_WARNINGS 1
using namespace std;
#include<stdlib.h>
#include<iostream>
#include<vector>
#include<stack>
#include<string>
//力扣
/*
題目要求:
根據(jù)逆波蘭表示法,求表達(dá)式的值。
有效的運(yùn)算符包括 +, -, *, / 。每個(gè)運(yùn)算對(duì)象可以是整數(shù),
也可以是另一個(gè)逆波蘭表達(dá)式。
*/
/*
解題思路:
創(chuàng)建一個(gè)棧,若是數(shù)字則將這個(gè)數(shù)字壓棧,若是符號(hào)則將棧頂兩個(gè)元素取出分別作為左右操作數(shù)進(jìn)行運(yùn)算后入棧
*/
class Solution {
public:
int evalRPN(vector<string>& tokens)//tokens是一個(gè)由string類(lèi)構(gòu)造的vector
{
stack <int> s;
int left, right;
int i = 0;
for (i; i<tokens.size(); i++)
{
string &str = tokens[i];//為了使用方便給定義一個(gè)string類(lèi)的變量str作為tokens中每個(gè)元素的引用
if (!("+" == str || "-" == str || "*" == str || "/" == str))
{
s.push(atoi(str.c_str()));//將字符類(lèi)型的變量轉(zhuǎn)化為整型
}
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;
}
當(dāng)前題目:波蘭式表達(dá)式(后綴表達(dá)式)求值
網(wǎng)址分享:http://aaarwkj.com/article6/iijhog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、、軟件開(kāi)發(fā)、虛擬主機(jī)、企業(yè)建站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)