# LeetCode 150. Evaluate Reverse Polish Notation

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.先Wiki百科下：

Reverse Polish notation也就是逆波兰表示法，是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式，在逆波兰记法中，所有操作符置于操作数的后面，因此也被称为后缀表示法。逆波兰结构由弗里德里希·鲍尔（Friedrich L. Bauer）和艾兹格·迪科斯彻在1960年代早期提议用于表达式求值，以利用堆栈结构减少计算机内存访问。

2.逆波兰表达式的解释器

public class Solution {
public int evalRPN(String[] tokens) {
if (tokens.length == 1) { // 排除不需要计算的情况
return Integer.parseInt(tokens[0]);
}
int[] stack = new int[tokens.length];
stack[0] = Integer.parseInt(tokens[0]);
stack[1] = Integer.parseInt(tokens[1]);
int stack_top = 2;
for (int i = 2; i < stack.length; i++) {
if (OpOrNum(tokens[i])) {
int a = stack[stack_top-2];
int b = stack[stack_top-1];
stack[stack_top-2] = medi_result(tokens[i], a, b);
stack_top=stack_top-1;
}else {
stack[stack_top] = Integer.parseInt(tokens[i]);
stack_top++;
}
}
return stack[0];
}

public boolean OpOrNum(String token) {
if (token.equals("+")|token.equals("-")|token.equals("*")|token.equals("/")) {
System.out.println(token);
return true;
}
return false;
}

public int medi_result(String token, int a, int b){
int result = 0;
if (token.equals("+")) {
result = a+b;
}
if (token.equals("-")) {
result = a-b;
}
if (token.equals("*")) {
result = a*b;
}
if (token.equals("/")&&(b!=0)) {
result = a/b;
}
return result;
}
}

to be continued....

• 本文已收录于以下专栏：

## LeetCode 150. Evaluate Reverse Polish Notation

LeetCode 150. Evaluate Reverse Polish Notation 栈

## leetcode 150. Evaluate Reverse Polish Notation

Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -...

## Leetcode 150：Evaluate Reverse Polish Notation

Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -...

## Evaluate Reverse Polish Notation - LeetCode 150

• bu_min
• 2015年05月28日 22:50
• 212

## Leetcode 150：Evaluate Reverse Polish Notation(计算逆波兰表达式) --java实现

1.概念 中缀表达式：1+2*3-4；4+5*1-6；平常我们所使用到的这种表达式，操作符在操作数的中间，这种表达式称为中缀表达式 后缀表达式：后缀表达式又叫逆波兰表达式，是为了纪念波兰的一位数学...

举报原因： 您举报文章：LeetCode 150. Evaluate Reverse Polish Notation 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)