leetcode-计算逆波兰表示法的值

package edu.bupt.cici.leetcode;

import java.util.ArrayList;

public class EvaluateReversePolishNotation {

public int evalRPN(String[] tokens) {
int temp = 0;
int length = tokens.length;
ArrayList<Integer> stack = new ArrayList<Integer>();

for (int i = 0; i < length; i++) {
if (!tokens[i].matches("^[\\+\\-*/]$")) {
temp = Integer.parseInt(tokens[i]);
stack.add(Integer.parseInt(tokens[i]));
} else {
switch (tokens[i]) {
case "+":
temp = stack.get(stack.size() - 2)
+ stack.get(stack.size() - 1);
break;
case "-":
temp = stack.get(stack.size() - 2)
- stack.get(stack.size() - 1);
break;
case "*":
temp = stack.get(stack.size() - 2)
* stack.get(stack.size() - 1);
break;
case "/":
temp = stack.get(stack.size() - 2)
/ stack.get(stack.size() - 1);
break;

default:
break;
}
stack.remove(stack.size() - 1);
stack.remove(stack.size() - 1);
stack.add(temp);
}
}

return temp;

}

public static void main(String[] args) {
// TODO Auto-generated method stub
String[] ipt = { "-3","9","*" };
EvaluateReversePolishNotation eRPN = new EvaluateReversePolishNotation();
int opt = eRPN.evalRPN(ipt);
System.out.println(opt);

}

}

leetcode-计算逆波兰表示法的值

时间: 2024-10-13 07:14:25

leetcode-计算逆波兰表示法的值的相关文章

LeetCode:逆波兰表达式求值【150】

LeetCode:逆波兰表达式求值[150] 题目描述 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达式总会得出有效数值且不存在除数为 0 的情况. 示例 1: 输入: ["2", "1", "+", "3", "*"] 输出: 9 解释: ((2

【LeetCode刷题Java版】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", "*"] -&g

[LeetCode] 150. 逆波兰表达式求值

题目链接 : https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/ 题目描述: 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达式总会得出有效数值且不存在除数为 0 的情况. 示例: 示例 1: 输入: ["2", "1", &qu

leetcode 150. 逆波兰表达式求值(栈)

根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说,表达式总会得出有效数值且不存在除数为 0 的情况. 示例 1: 输入: ["2", "1", "+", "3", "*"] 输出: 9 解释: ((2 + 1) * 3) = 9 示例 2: 输入: [&qu

逆波兰表示法

逆波兰表示发是一种将运算符写在操作数后面的描述程序(算式)的方法.举个例子,我们平常用中缀表示法描述的算式(1 + 2) * (5 + 4),改为逆波兰表示法之后则是1 2 + 5 4 + *.相较于中缀表示法,逆波兰表示法的优势在于不需要括号. 请输出以逆波兰表示法输入的算式的计算结果. 输入   在1行中输入1个算式.相邻的符号(操作数或运算符)用1个空格隔开. 输出   在1行之中输出计算结果. 限制   2≤算式中操作数的总数≤100 1≤算式中运算符的总数≤99 运算符仅包括"+&qu

【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】

[151-Evaluate Reverse Polish Notation(计算逆波兰式)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expression. Some

LeetCode之逆波兰式求解

计算逆波兰式子: 有效的操作只有 +, -, *, /. 每一个输入不是一个整数就是一个操作符. Some examples: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 +

[Leetcode] 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", "*"] -> (

栈应用——逆波兰式表达式的值

问题描述: 计算给定的逆波兰表达式(即后缀表达式)的值. 事实上,二元运算的前提下,中缀表达式可以对应一棵二叉树:逆波兰式即该二叉树后序遍历的结果. 分析思路: 如果当前是操作数,则直接入栈: 如果当前是操作符,则栈顶的两个元素弹出,然后与当前操作符运算后入栈. Code: /** * 给出一个逆波兰式,计算该表达式的值 * @param s * @return */ public int getTheValueOfRPN(String s) { char[] ch = s.toCharArra