smilevchy's blog

Life & Study & Chasing

Leetcode_Evaluate Reverse Polish Notation

原题链接: https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/

public int evalRPN(String[] tokens) {
    if (tokens == null || tokens.length == 0) return 0;

    LinkedList<Integer> stack = new LinkedList<Integer>();
    int result = 0;
    String ele = null;

    for (int i = 0, len = tokens.length; i < len; i++) {
        ele = tokens[i];

        if ("+".equals(ele) || "-".equals(ele) || "*".equals(ele) || "/".equals(ele)) {
            if (stack.isEmpty()) return result;
            Integer right = stack.pop();

            if (stack.isEmpty()) return result;
            Integer left = stack.pop();

            if ("+".equals(ele)) {
                stack.push(left + right);                   
            } else if ("-".equals(ele)) {
                stack.push(left - right);
            } else if ("*".equals(ele)) {
                stack.push(left * right);
            } else if ("/".equals(ele)) {
                stack.push(left / right);
            }
        } else {
            stack.push(Integer.valueOf(ele));
        }
    }

    if (!stack.isEmpty()) result = Integer.valueOf(stack.pop());

    return result;
}

algorithm

« Leetcode_Single Number II Leetcode_Rotate Image »