1、題目描述
根據 逆波蘭表示法,求運算式的值,
有效的算符包括 +、-、*、/ ,每個運算物件可以是整數,也可以是另一個逆波蘭運算式,
說明:
整數除法只保留整數部分,
給定逆波蘭運算式總是有效的,換句話說,運算式總會得出有效數值且不存在除數為 0 的情況,

2、演算法分析
這個題是堆疊的應用,
將字符陣列中的元素入堆疊,如果遇到“+”,“-”,“*”,“/”就出堆疊兩個元素,進行計算
注意計算的細節:
①進堆疊的元素進行減法的時候,是后出堆疊的元素減去先出堆疊的元素
②進堆疊的元素進行除法的時候,也是后出堆疊的元素除先出堆疊的元素
最后回傳的是堆疊最后的元素stack.pop()就行
3、代碼實作
class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<>();
for(int i = 0;i < tokens.length;i++){
String current = tokens[i];
if("+".equals(current)){
Integer a = stack.pop();
Integer b = stack.pop();
Integer sum = a + b;
stack.push(sum);
}else if("-".equals(current)){
Integer c = stack.pop();
Integer d = stack.pop();
Integer decimal = d - c;
stack.push(decimal);
}else if("*".equals(current)){
stack.push(stack.pop() * stack.pop());
}else if("/".equals(current)){
Integer num1 = stack.pop();
Integer num2 = stack.pop();
stack.push(num2 / num1);
}else{
stack.push(Integer.valueOf(current));
}
}
return stack.pop();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/387279.html
標籤:區塊鏈
