本文主要是介绍Leetcode 150:逆波兰表达式求值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你一个字符串数组 tokens
,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。
示例 1:
输入:tokens = ["2","1","+","3","*"] 输出:9 解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9
示例 2:
输入:tokens = ["4","13","5","/","+"] 输出:6 解释:该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6
import java.util.Stack;public class title150 {public static void main(String[] args) {String[] tokens = {"2", "1", "+", "3", "*"};System.out.println(evalRPN(tokens));}public static int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();Integer a, b, c;for (int i = 0; i < tokens.length; i++) {//1.先判断是否为四种符号String s = tokens[i];if (s.equals("+")) {//需要将字符串形式的数字转化为int型a = stack.pop();b = stack.pop();c = a + b;stack.push(c);} else if (s.equals("-")) {a = stack.pop();b = stack.pop();c = b - a;stack.push(c);} else if (s.equals("*")) {a = stack.pop();b = stack.pop();c = a * b;stack.push(c);} else if (s.equals("/")) {a = stack.pop();b = stack.pop();c = b / a;stack.push(c);} else {//先将字符串数字转换为int,再入栈stack.push(Integer.valueOf(s));}}return stack.pop();}
}
这篇关于Leetcode 150:逆波兰表达式求值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!