Java實現-逆波蘭表示式求值
阿新 • • 發佈:2019-01-23
求逆波蘭表示式的值。
在逆波蘭表達法中,其有效的運算子號包括 +
, -
, *
, /
。每個運算物件可以是整數,也可以是另一個逆波蘭計數表達。
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
public class Solution { /** * @param tokens The Reverse Polish Notation * @return the value */ public int evalRPN(String[] tokens) { if(tokens==null||tokens.length==0){ return 0; } if(tokens.length==1){ return Integer.parseInt(tokens[0]); } Stack<Integer> stack=new Stack<Integer>(); for(int i=0;i<tokens.length;i++){ String temp=tokens[i]; if(temp.equals("+")){ int a=stack.pop(); int b=stack.pop(); stack.push(a+b); }else if(temp.equals("*")){ int a=stack.pop(); int b=stack.pop(); stack.push(a*b); }else if(temp.equals("-")){ int a=stack.pop(); int b=stack.pop(); stack.push(b-a); }else if(temp.equals("/")){ int a=stack.pop(); int b=stack.pop(); stack.push(b/a); }else{ stack.add(Integer.parseInt(temp)); } } return stack.pop(); } }