住房和城鄉(xiāng)建設(shè)部執(zhí)法網(wǎng)站軟文推廣網(wǎng)站
提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
目錄
前言
一、題目-逆波蘭表達(dá)式求值
1.題目描述
2.思路與代碼
2.1 思路
2.2 代碼
總結(jié)
前言
提示:這里可以添加本文要記錄的大概內(nèi)容:
4月5日練習(xí)內(nèi)容
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、題目-逆波蘭表達(dá)式求值
1.題目描述
給你一個(gè)字符串?dāng)?shù)組 tokens ,表示一個(gè)根據(jù)?逆波蘭表示法 表示的算術(shù)表達(dá)式。
請(qǐng)你計(jì)算該表達(dá)式。返回一個(gè)表示表達(dá)式值的整數(shù)。
注意:
有效的算符為 '+'、'-'、'*' 和 '/' 。
每個(gè)操作數(shù)(運(yùn)算對(duì)象)都可以是一個(gè)整數(shù)或者另一個(gè)表達(dá)式。
兩個(gè)整數(shù)之間的除法總是 向零截?cái)?。
表達(dá)式中不含除零運(yùn)算。
輸入是一個(gè)根據(jù)逆波蘭表示法表示的算術(shù)表達(dá)式。
答案及所有中間計(jì)算結(jié)果可以用 32 位 整數(shù)表示。
示例?1:
輸入:tokens = ["2","1","+","3","*"]
輸出:9
解釋:該算式轉(zhuǎn)化為常見的中綴算術(shù)表達(dá)式為:((2 + 1) * 3) = 9
示例?2:
輸入:tokens = ["4","13","5","/","+"]
輸出:6
解釋:該算式轉(zhuǎn)化為常見的中綴算術(shù)表達(dá)式為:(4 + (13 / 5)) = 6
示例?3:
輸入:tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
輸出:22
解釋:該算式轉(zhuǎn)化為常見的中綴算術(shù)表達(dá)式為:
? ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/evaluate-reverse-polish-notation
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2.思路與代碼
2.1 思路
1.本題使用棧來解決
2.遍歷字符數(shù)組,如果遇到運(yùn)算符則將元素出棧進(jìn)行運(yùn)算,并將結(jié)果重新入棧
3.如果不是運(yùn)算符,則將其入棧
4.遍歷完字符串,將最終結(jié)果出棧并輸出
2.2 代碼
代碼如下(示例):
class Solution {public int evalRPN(String[] tokens) {//創(chuàng)建一個(gè)棧Stack<Integer> stack = new Stack<>();//遍歷字符串for(String str : tokens){//運(yùn)算數(shù)Integer i1;Integer i2;Integer result;//switch結(jié)構(gòu)switch(str){case "+"://如果是+號(hào),則//出棧i1 = stack.pop();i2 = stack.pop();//計(jì)算結(jié)果result = i1 + i2;//將結(jié)果入棧stack.push(result);break;case "-"://如果是-號(hào),則//出棧i1 = stack.pop();i2 = stack.pop();//計(jì)算結(jié)果result = i2 - i1;//將結(jié)果入棧stack.push(result);break;case "*"://如果是*號(hào),則//出棧i1 = stack.pop();i2 = stack.pop();//計(jì)算結(jié)果result = i1 * i2;//將結(jié)果入棧stack.push(result);break;case "/"://如果是/號(hào),則//出棧i1 = stack.pop();i2 = stack.pop();//計(jì)算結(jié)果result = i2 / i1;//將結(jié)果入棧stack.push(result);break;default://不是運(yùn)算符則入棧stack.push(Integer.parseInt(str));}}//將最后結(jié)果出棧Integer result = stack.pop();return result;}
}
總結(jié)
提示:這里對(duì)文章進(jìn)行總結(jié):
?