您的位置:首页 > 编程语言 > Lua

[LeetCode]150. Evaluate Reverse Polish Notation

2016-03-04 16:03 423 查看

Problem Description

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

[]https://leetcode.com/problems/evaluate-reverse-polish-notation/]

思路

后缀表达式啦啦啦~

Code

package q150;

import java.util.Stack;

public class Solution {

public static int evalRPN(String[] tokens) {
if (tokens.length < 1)
return 0;
int ans = 0;
Stack<String> num = new Stack<String>();
for (int i = 0; i < tokens.length; i++) {
if (!tokens[i].equals("+") && !tokens[i].equals("-")
&& !tokens[i].equals("*") && !tokens[i].equals("/")) {
num.push(tokens[i]);
} else {
int a = Integer.parseInt(num.pop());
int b = Integer.parseInt(num.pop());
char theOp = tokens[i].charAt(0);
switch (theOp) {
case '+':
ans = a + b;
num.push(ans + "");
break;
case '-':
ans = b - a;
num.push(ans + "");
break;
case '*':
ans = a * b;
num.push(ans + "");
break;
case '/':
ans = b / a;
num.push(ans + "");
break;
default:
break;
}
}
}

return Integer.parseInt(num.pop());

}
//
//  public static void main(String[] args) {
//      String[] a = { "2", "1", "+", "3", "*" };
//      System.out.print(evalRPN(a));
//  }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode