【LeetCode】Evaluate Reverse Polish Notation

来源:互联网 发布:新疆买买提网络用语 编辑:程序博客网 时间:2024/05/18 21:05

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

Valid operators are +-*/. Each operand may be an integer or another expression.

Some examples:

  ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9  ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

1. stack的应用,可以使用vector实现一个stack,涉及到vector的使用,http://www.blogjava.net/Yang/archive/2006/01/05/26662.html

2.判断String是否为数字:(1)使用正则表达式 (2)通过Integer.parseInt( )抛异常来判断

import java.util.*;public class Solution {    public static int evalRPN(String[] tokens) {        Vector<Integer> stack = new Vector<Integer>();        int len = tokens.length;        for(int i = 0;i< len;i++)        {            boolean isNum = tokens[i].matches("-?[0-9]+");            if(isNum)             {                int tmp = Integer.parseInt(tokens[i]);                stack.addElement(tmp);            }            else            {                int length = stack.size();                int tmp1 = stack.elementAt(length-2);                int tmp2 = stack.elementAt(length-1);                stack.removeElementAt(length-1);                stack.removeElementAt(length-2);                if(tokens[i].equals("+"))                {                                       int sum = tmp1 + tmp2;                    stack.addElement(sum);                }                else if(tokens[i].equals("-"))                {                    int sub = tmp1 - tmp2;                    stack.addElement(sub);                }                else if(tokens[i].equals("*"))                {                    int mul = tmp1 * tmp2;                    stack.addElement(mul);                }                else if(tokens[i].equals("/"))                {                    int dive = tmp1/tmp2;                    stack.addElement(dive);                }                else                {                                    }                            }                    }        int result = stack.elementAt(0);        return result;            }    }


0 0
原创粉丝点击