Given an expression string array, return the final result of this expression.
Hint: Shunting-yard algorithm
Example
For the expression 2*6-(23+7)/(1+2)
, input is
[
"2", "*", "6", "-", "(",
"23", "+", "7", ")", "/",
(", "1", "+", "2", ")"
],
return 2
Note
The expression contains only integer
, +
, -
, *
, /
, (
, )
.
public int evaluateExpression(String[] expression) { Stack<String> stack = new Stack<>(); Queue<String> queue = new LinkedList<>(); for(String op:expression) { if("+-*/".contains(op)) { if(!stack.isEmpty() && getPriority(stack.peek()) >= getPriority(op)) { queue.offer(stack.pop()); } stack.push(op); } else if("(".equals(op)) { stack.push(op); } else if(")".equals(op)) { while(!"(".equals(stack.peek())) { queue.offer(stack.pop()); } stack.pop(); } else { queue.offer(op); } } while(!stack.isEmpty()) { queue.offer(stack.pop()); } return evaluateRPN(queue); } private int getPriority(String op) { char c = op.charAt(0); if(c == '+' || c == '-') { return 1; } else if(c=='*' || c=='/') { return 2; } return 0; } private int evaluateRPN(Queue<String> rpn) { Stack<Integer> stack = new Stack<>(); while(!rpn.isEmpty()) { String op = rpn.poll(); if("+-*/".contains(op)) { int result = 0; int b = stack.pop(); int a = stack.pop(); if(op.equals("+")) { result = a + b; } else if(op.equals("-")) { result = a - b; } else if(op.equals("*")) { result = a * b; } else if(op.equals("/")) { result = a / b; } stack.push(result); } else { stack.push(Integer.parseInt(op)); } } if(stack.isEmpty()) return 0; return stack.pop(); }
相关推荐
开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE...
赠送jar包:spring-expression-5.2.0.RELEASE.jar; 赠送原API文档:spring-expression-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...
赠送jar包:spring-expression-5.3.15.jar; 赠送原API文档:spring-expression-5.3.15-javadoc.jar; 赠送源代码:spring-expression-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.15.pom;...
赠送jar包:spring-expression-5.3.10.jar;赠送原API文档:spring-expression-5.3.10-javadoc.jar;赠送源代码:spring-expression-5.3.10-sources.jar;赠送Maven依赖信息文件:spring-expression-5.3.10.pom;...
赠送jar包:spring-expression-5.3.15.jar; 赠送原API文档:spring-expression-5.3.15-javadoc.jar; 赠送源代码:spring-expression-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.15.pom;...
赠送jar包:spring-expression-5.2.7.RELEASE.jar; 赠送原API文档:spring-expression-5.2.7.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.2.7.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...
赠送jar包:spring-expression-5.0.10.RELEASE.jar; 赠送原API文档:spring-expression-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring...
赠送jar包:spring-expression-5.0.5.RELEASE.jar; 赠送原API文档:spring-expression-5.0.5.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.0.5.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...
赠送jar包:spring-expression-5.0.10.RELEASE.jar; 赠送原API文档:spring-expression-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring...
spring-expression-4.2.6.RELEASE,欢迎下载,如有疑问,请留意
赠送jar包:spring-expression-4.3.20.RELEASE.jar 赠送原API文档:spring-expression-4.3.20.RELEASE-javadoc.jar 赠送源代码:spring-expression-4.3.20.RELEASE-sources.jar 包含翻译后的API文档:spring-...
spring框架,maven下来的spring-expression-4.3.12.RELEASE.jar
标题"A-simple-expression-evaluation-class.zip_class A"指向的是一个用于计算简单数学表达式的Java类,我们将其称为"表达式求值类"。这个类能够处理基本的算术运算,包括加法、减法、乘法和除法。在编程领域,这种...
赠送jar包:spring-expression-5.3.10.jar; 赠送原API文档:spring-expression-5.3.10-javadoc.jar; 赠送源代码:spring-expression-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.10.pom;...
在这个Pytorch项目中,"Facial-Expression-Recognition.Pytorch-master"是一个实现这一功能的源代码库。下面我们将深入探讨相关的关键知识点。 1. **深度学习基础**: 深度学习是机器学习的一个分支,它模仿人脑...
标题中的"spring-expression-3.2.1.RELEASE.zip"是一个Spring框架的组件,Spring Expression Language (SpEL) 的特定版本。SpEL是Spring框架的一部分,它提供了一种强大的表达式语言,用于在运行时查询和操作对象图...
微观表情(Micro-Expression)是指那些极快速、不易察觉的面部表情,通常在250毫秒以下,它们通常被用来表示人们在试图掩饰或控制自己真实情绪时的自然反应。相对的,宏表情(Macro-Expression)则要明显得多,持续...
赠送jar包:spring-expression-4.3.12.RELEASE.jar; 赠送原API文档:spring-expression-4.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-expression-4.3.12.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring...
赠送jar包:spring-expression-5.3.7.jar; 赠送原API文档:spring-expression-5.3.7-javadoc.jar; 赠送源代码:spring-expression-5.3.7-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.7.pom; ...
赠送jar包:spring-expression-5.3.12.jar; 赠送原API文档:spring-expression-5.3.12-javadoc.jar; 赠送源代码:spring-expression-5.3.12-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.12.pom;...