evaluate-reverse-polish-notation(Leetcode)
2016-05-29 22:32
302 查看
题目描述
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
题意是计算给定表达式的值,将操作数放在一个栈中,每遇到一个操作符从栈中弹出两个数字。
package sxd.learn.java.leetcode; /** * * @author lab * 2016/5/12 * Evaluate the value of an arithmetic expression in * Reverse Polish Notation. */ public class Leetcode2 { public static void main(String[] args) { String[] test = { "0", "3", "/" }; System.out.println(evalRPN(test)); } public static int evalRPN(String[] tokens) { java.util.Stack<Integer> numStack = new java.util.Stack<>(); String num = null; for (int i = 0; i < tokens.length; i++) { num = tokens[i]; if (!isOper(num)) { numStack.push(Integer.parseInt(num)); } else { int num1 = numStack.pop(); int num2 = numStack.pop(); numStack.push(operation(num, num1, num2)); } } return numStack.pop(); } public static boolean isOper(String str){ if(str.length() == 1){ if(str.charAt(0) == '+' || str.charAt(0) == '-') return true; else if(str.charAt(0) == '*' || str.charAt(0) == '/') return true; return false; } return false; } public static int operation(String op, int num1, int num2) { int num = 0; switch (op) { case "+": num = num2 + num1; break; case "-": num = num2 - num1; break; case "*": num = num2 * num1; break; case "/": num = num2 / num1; break; default: break; } return num; } }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解