首页 > 其他分享 >逆波兰表达式/中缀表达式

逆波兰表达式/中缀表达式

时间:2023-02-01 10:36:04浏览次数:46  
标签:中缀 num2 int res list 波兰 stack 表达式 num1


逆波兰表达式/中缀表达式

1.先定义一个方法分割字符串每个数据,然后存到集合里面
2.然后在新的方法中定义 一个栈来存储数据
具体实现如下:

//字符串转换为list集合
public static List<String> getString(String str)
{
//方便为了测试,用空格隔开
String [] res=str.split(" ");
//创建集合存储
List<String> list=new ArrayList<String>();

for (String red:res) {
list.add(red);

}

return list;
}

//计算逆波兰表达式
public static int ca(List<String> list)
{
//定义一个集合存储数据
Stack<String> stack=new Stack<>();
//遍历集合
for (String item:list)
{
//判断是否为数字,是放进去
if (item.matches("\\d+")){
stack.push(item);
//否则丛stack弹出两个数据进行运算
}else
{
//第二个数据
int num2=Integer.parseInt(stack.pop());
//第一个数
int num1=Integer.parseInt(stack.pop());
int res=0;
switch (item){
case "+":
res=num1+num2;
break;
case "-":res=num1-num2;
break;
case "*":res=num1*num2;
break;
case "/": res=num1/num2;
break;
default:throw new RuntimeException("符号有误");
}
//最后的后果
stack.push(res+"");
}
}
return Integer.parseInt(stack.pop());
}

逆波兰表达式/中缀表达式_java


标签:中缀,num2,int,res,list,波兰,stack,表达式,num1
From: https://blog.51cto.com/u_15949251/6030899

相关文章

  • 正则表达式
    视频:正则表达式30分钟入门40分钟进阶(绝对能学会)【二倍速观看】测试网站:正则表达式在线测试【测试+可视化】内容回忆:参考手册......
  • MySQL------8.0新特性:公用表表达式
    公用表表达式(或通用表表达式)简称为CTE(CommonTableExpressions)。CTE是一个命名的临时结果集,作用范围是当前语句。CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点......
  • 可靠性特征的数学表达式及其关系
    ​​​​​​​​​​​​下面对于各个特征做逐个的分析(1)可靠度R(t)定义:产品在规定条件下和规定时间内完成规定功能的概率(通俗来说,过了规定的时间,产品依然能够正常工作的概率)......
  • spring 定时任务的 时间配置cron表达式
    单纯针对时间的设置规则org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpression属性。一个cronExpression......
  • 正则表达式常用符号
    目录[]\^$[][]匹配一组可能出现的字符例:[Pp]既可以匹配大写的P也可以匹配小写的p连字符(-)代表区间匹配任意数字可以使用[0-9];如果想要匹配所有小写字母,可以写成[......
  • PostgreSQL学习笔记-2.基础知识:INSERT、SELECT、运算符、表达式、约束
    PostgreSQLINSERTINTO语句用于向表中插入新记录,兼容SQL通用语法。语法INSERTINTO语句语法格式如下:INSERTINTOTABLE_NAME(column1,column2,column3,...column......
  • 定时任务用到的cron时间表达式 CronTrigger
    CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表。CronTrigger,你可以指定触发的时间表如“......
  • 读Java8函数式编程笔记06_Lambda表达式编写并发程序
    1. 阻塞式I/O1.1. 一种通用且易于理解的方式,因为和程序用户的交互通常符合这样一种顺序执行的方式1.2. 将系统扩展至支持大量用户时,需要和服务器建立大量TCP连接,因此......
  • 下标引用函数调用和表达式求值
    前言:下标的用法非常非常的重要关乎到数组函数指针结构体等等一切,函数的调用也有很多细节表达式求值涉及优先级问题要注意1.下标引用、函数调用和结构成员注:一切下标又是从0......
  • python使用正则表达式实现字符串替换
    python的字符串提供了replace方法,可以将子串替换成其他字符串,例如下面的代码name='flask_script'name=name.replace('_','-')print(name)#flask-script替换的前提......