Evaluate Reverse Polish Notation——LeetCode

3563 단어 LeetCode
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

 
제목 대의: String 그룹을 지정합니다. 데이터는 접두사 표현식입니다. 이 표현식의 값을 구하십시오.
문제 풀이 사고방식: 창고로 조작수를 저장하면 되고, 수를 만나면 창고에 들어가고, 조작부호를 만나면 창고에서 두 개의 원소를 추출하여 연산하여 창고에 들어가면 된다. 마지막으로 창고에 한 개의 원소만 남기면 결과이다.이것은 괄호를 끼지 않는 것이 좀 쉬워서 직접 코드를 붙인다.
  static Map<String, Integer> op = new HashMap<>();



    static {

        op.put("+", 1);

        op.put("-", 2);

        op.put("*", 3);

        op.put("/", 4);

    }



    public int evalRPN(String[] tokens) {

        if (tokens == null || tokens.length == 0) {

            return 0;

        }

        Stack<Integer> nums = new Stack<>();

        for (String s : tokens) {

            if (op.get(s) != null) {

                int fa = nums.pop();

                int fb = nums.pop();

                if (op.get(s) == 1) {

                    nums.push(fb + fa);

                } else if (op.get(s) == 2) {

                    nums.push(fb - fa);

                } else if (op.get(s) == 3) {

                    nums.push(fb * fa);

                } else {

                    nums.push(fb / fa);

                }

            } else {

                nums.push(Integer.valueOf(s));

            }

        }

        return nums.peek();

    }

좋은 웹페이지 즐겨찾기