题目就是计算表达式 1+2*3+4 = 11可以去搜parse mathematical expression,不考虑括号
Solution:
use two arrays to store numbers and signs.
nums = [1,2,3,4]
signs = [+, *, +]
scan signs, when we meet * or /, and change * or / into +, corresponding nums changed to [0, a*b] or [0, a/b]. for the example:
nums = [1,0,6,4]
signs = [+,+,+].
then do (zigzag) sum.
public int calcExpression(String expr) { //正则表达式,运算符得escape,并且用[]包裹,表示或;否则会表示"+-*/"四个都匹配才行 String[] digits = expr.split("[\\+\\-\\*\\/]"); //[, +, *, -, /], 第一个是leading empty string, trailing empty string会自动去掉,而头部的不会 String[] ops = expr.split("\\d+"); // 或者下面这种做法,移除第一个数字 // String[] ops = expr.replaceFirst("\\d+", "").split("\\d+"); int n = digits.length; int[] nums = new int[n]; for(int i=0; i<n; i++) { nums[i] = Integer.valueOf(digits[i]); } for(int i=1; i<ops.length; i++) {//因为第0项是空字符串,所以从第一项开始 if(ops[i].equals("*")) { nums[i] = nums[i-1] * nums[i]; nums[i-1] = 0; } else if(ops[i].equals("/")) { nums[i] = nums[i-1] / nums[i]; nums[i-1] = 0; } else if(ops[i].equals("-")) { //不能减,因为后面有可能是*/运算,比-的优先度高,所以要变成负数的加法,这样不影响优先级 nums[i] = -nums[i]; } } int sum = 0; for(int i=0; i<n; i++) { sum += nums[i]; } return sum; }
Solution 2:
可以用Shunting-Yard先转换成逆波兰表达式,然后再求值,这种方法比较通用,但是实现起来可能要花点时间。具体代码见本博客的如下文章。
相关推荐
# 解压命令 tar -zxvf flink-shaded-hadoop-2-uber-3.0.0-cdh6.2.0-7.0.jar.tar.gz # 介绍 用于CDH部署 Flink所依赖的jar包
flink-shaded-hadoop-2-uber-2.7.5-10.0.jar
《Flink Shaded Hadoop 2 Uber Jar:深入解析与应用》 Apache Flink 是一个流行的开源大数据处理框架,而 `flink-shaded-hadoop-2-uber-2.7.5-10.0.jar.zip` 文件是针对 Flink 优化的一个特殊版本的 Hadoop 库。这...
《Flink与Hadoop的深度整合:flink-shaded-hadoop-2-uber-2.6.5-10.0.zip详解》 在大数据处理领域,Apache Flink 和 Apache Hadoop 是两个不可或缺的重要组件。Flink作为一个实时流处理框架,以其高效的事件驱动和...
hive-jdbc-uber-2.6.5.0-292.jar DbVisualizer (as of version 9.5.5) Below is an example configuration using DbVisualizer: Open the Diver Manager dialog ("Tools" > "Driver Manager...") and hit the ...
Flink1.10.1编译hadoop2.7.2 编译flink-shaded-hadoop-2-uber
《Hive JDBC Uber Jar:2.6.5.0-292版本解析与应用》 在大数据处理领域,Hive作为一个基于Hadoop的数据仓库工具,广泛用于存储、查询和分析大规模数据集。Hive JDBC(Java Database Connectivity)是Hive提供的一种...
标题中的"**hive-jdbc-uber-2.6.5.0-292.jar**"是一个Uber(也称为Shaded)JAR文件,它集成了Hive JDBC驱动的所有依赖项。Uber JAR的目的是为了方便部署,因为它将所有必需的库合并到一个单一的文件中,避免了类路径...
flink-shaded-hadoop-2-uber-2.7.2-11.0.jar 是flink1.11集成hadoop2.7.2的jar依赖。
hive客户端工具DBever连接时所使用的驱动,hive-jdbc-uber-2.6.5.0-292.jar,hive-jdbc-uber-2.6.5.0-292.jar,hive-jdbc-uber-2.6.5.0-292.jar
为解决这个问题,Flink社区提供了"flink-shaded-hadoop-3-uber-3.1.1.7.1.1.0-5.6.5-9.0.jar"这样的兼容包,这是一个"uber jar",也称为fat jar,它包含了Flink对Hadoop 3.x的依赖,并进行了重打包处理,以避免类...
Hive JDBC Uber 2.6.5.0-292驱动是Apache Hive与Java数据库连接(JDBC)之间的桥梁,允许用户通过编程语言(如Java、Python等)或者数据库管理工具(如Dbeaver)与Hive进行交互。这个驱动程序集成了所有必要的依赖,...
标题中的“hive-jdbc-uber-2.6.5.0-292.zip”指的是Hive JDBC驱动的Uber版本,版本号为2.6.5.0-292。Uber JAR是一种包含所有依赖的单一JAR文件,便于分发和使用,特别是对于连接工具如DataGrip这样的集成开发环境...
当前的flink版本是一个纯净的版本,如果需要依赖其他系统(例如咱们当前flink的相关数据都存储到了hdfs),则需要添加相应的jar包 下载完成后上传到${FLINK_HOME}/lib/目录下
hadoop版本2.7.4,flink 版本1.11,官网没有编译好的flink-shaded-hadoop-2-uber-2.7.4-11.0.jar,自己编译成功的jar,可以直接放到flink下lib目录下即可
《Hive JDBC Uber 3.1.2与Yanagishima:Kerberos环境下的即席查询解决方案》 在大数据处理领域,Apache Hive作为一款强大的数据仓库工具,被广泛用于存储、管理和分析大规模结构化数据。而Hive JDBC是连接Hive与...