1. 程式人生 > >Java實現-逆波蘭表示式求值

Java實現-逆波蘭表示式求值

求逆波蘭表示式的值。

在逆波蘭表達法中,其有效的運算子號包括 +-*/ 。每個運算物件可以是整數,也可以是另一個逆波蘭計數表達。

您在真實的面試中是否遇到過這個題?  Yes 樣例
["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();

    }
}