括号匹配+Java栈

括号匹配

import java.util.LinkedList;class MyStack{private int num;private LinkedList<Character>date;public MyStack(){this.num=0;date=new LinkedList<Character>();}public boolean isEmpty(){return num==0?true:false;}public void push(Character ch){this.date.add(ch);this.num++;}public Character pop(){if(this.isEmpty())return ' ';Character ch=this.date.remove(date.size()-1);this.num--;return ch;}
}
class Solution{private boolean check(char left,char right){if(left=='(') return right==')'?true:false;if(left=='[') return right==']'?true:false;if(left=='{') return right=='}'?true:false;return false;}public boolean isValid(String s){char[] temp=s.toCharArray();//toCharArray()将字符串转化成字符数组MyStack stack=new MyStack();boolean flag=true;for(int i=0;i<temp.length;i++){if(temp[i]=='('||temp[i]=='{'||temp[i]=='[')stack.push(temp[i]);else{char left=stack.pop();if(left==' ')flag=false;if(!check(left,temp[i]))flag=false;}}if(flag){if(!stack.isEmpty())flag=false;}return flag;}
}
public class Main{public static void main(String[] args) {Solution solution=new Solution();System.out.println(solution.isValid("({[]})"));}
}

能够匹配:true
反之:false;

逆波兰表达式

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;public class Main {public static void main(String[] args) {//逆波兰表达式计算机求值//(3+4)×5-6 => 3 4 + 5 × 6 - //定义一个String类型的逆波兰表达式 数字与数字与符号之间用空格隔开Scanner input=new Scanner(System.in);String suffixException=input.nextLine();input.close();//String suffixException="3 4 + 5 * 6 -";List<String> list= getList(suffixException);System.out.println(list);int calculate = calculate(list);System.out.println(calculate);}//将一个逆波兰表达式, 依次将数据和运算符 放入到 ArrayList 中public static List<String> getList(String suffixException ){//然后将 suffixException 逐个放入到链表中String[] split = suffixException.split(" ");//将表达式按空格切分ArrayList<String> list = new ArrayList<>();//将切分后的加入到链表中for (String ele : split ){list.add(ele);}return list;}//定义计算方法/*完成对逆波兰表达式的运算1)从左至右扫描,将 3 和 4 压入堆栈;2)遇到+运算符,因此弹出 4 和 3(4 为栈顶元素,3 为次顶元素),计算出 3+4 的值,得 7,再将 7 入栈;3)将 5 入栈;4)接下来是×运算符,因此弹出 5 和 7,计算出 7×5=35,将 35 入栈;5)将 6 入栈;6)最后是-运算符,计算出 35-6 的值,即 29,由此得出最终结果*/public static int calculate(List<String> list) {//拿到list 之后把 list 中的字符串取出来  然后转换为int 类型计算Stack<String> stack = new Stack<>();for (String ls : list) {//如果是数字 就入栈  使用正则表达式来匹配多位数if (ls.matches("\\d+")) {//入栈stack.push(ls);} else {//是符号就从栈里出两个数字计算后入栈int num2 = Integer.parseInt(stack.pop());//将字符串转换为整数int num1 = Integer.parseInt(stack.pop());//定义一个变量用来保存计算结果int res = 0;if (ls.equals("+")){ return res=num1+num2;}else if (ls.equals("-")){res= num1-num2;}else if (ls.equals("*")){res=num1*num2;}else if (ls.equals("/")){res=num1 /num2;}else {throw  new  RuntimeException("");}//把计算结果入栈stack.push(""+res);}}//最后留在栈中的数字就是表达式的运算结果return Integer.parseInt(stack.pop());}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个static和面试官扯了一个小时,舌战加强版

一&#xff1a;背景1. 讲故事最近也是奇怪&#xff0c;在社区里看到好几篇文章聊static 的玩法以及怎么拿这个和面试官扯半个小时&#xff0c;有点意思&#xff0c;点进去看都是java版的&#xff0c;这就没意思了&#xff0c;怎么也得有一篇和面试官扯C# 中的 static用法撒&…

[JavaWeb-JavaScript]JavaScript_Math数学对象

Math&#xff1a;数学对象 1. 创建&#xff1a;* 特点&#xff1a;Math对象不用创建&#xff0c;直接使用。 Math.方法名();2. 方法&#xff1a;random():返回 0 ~ 1 之间的随机数。 含0不含1ceil(x)&#xff1a;对数进行上舍入。floor(x)&#xff1a;对数进行下舍入。round(x…

数据结构整理中。。。

目录栈队列链表单向链表双向链表向链表中插入&#xff08;写入&#xff09;数据单向链表单向循环链表双向循环链表从链表中删除数据单向&#xff08;循环&#xff09;链表双向循环链表哈希表哈希函数冲突拉链法闭散列法并查集启发式合并&#xff08;按秩合并&#xff09;带权并…

.NET开发者省份分布排名

什么叫.NET开发者省份分布排名呢&#xff1f; 顾名思义&#xff0c;这几个词大家都认识&#xff0c;.NET开发者都集中在城市&#xff0c;涵盖一线城市到五线城市。排名的方法非常简单粗暴&#xff0c;就是根据本公众号&#xff08;dotnet跨平台&#xff09;的省份订阅读者数量排…

[JavaWeb-JavaScript]JavaScript_RegExp正则表达式对象

RegExp&#xff1a;正则表达式对象 1. 正则表达式&#xff1a;定义字符串的组成规则。1. 单个字符:[]如&#xff1a; [a] [ab] [a-zA-Z0-9_]* 特殊符号代表特殊含义的单个字符:\d:单个数字字符 [0-9]\w:单个单词字符[a-zA-Z0-9_]2. 量词符号&#xff1a;?&#xff1a;表示出现…

创建型模式——单例模式

一、 实验目的与要求 1.练习使用单例模式。设计相关的模拟场景并进行实施&#xff0c;验证模式特性&#xff0c;掌握其优缺点。 2.实验结束后&#xff0c;对相关内容进行总结。 二、实验内容 1.模式应用场景说明 在山区或者边远地区火车站往往只有一个窗口在买票&#xff0c;但…

Sql Server之旅——终点站 nolock引发的三级事件的一些思考

曾今有件事情让我记忆犹新&#xff0c;那年刚来携程不久&#xff0c;马上就被安排写一个接口&#xff0c;供企鹅公司调用他们员工的差旅信息&#xff0c;然后我就三下五除二的给写好了&#xff0c;上线之后&#xff0c;大概过了一个月。。。DBA那边报告数据库出现大量锁超时&am…

[JavaWeb-JavaScript]JavaScript_Global全局对象

Global 1. 特点&#xff1a;全局对象&#xff0c;这个Global中封装的方法不需要对象就可以直接调用。 方法名();2. 方法&#xff1a;encodeURI():url编码decodeURI():url解码encodeURIComponent():url编码,编码的字符更多decodeURIComponent():url解码parseInt():将字符串转为…

创建型模式——原型模式

一、 实验目的与要求 1.练习使用单一模式。设计相关的模拟场景并进行实施&#xff0c;验证模式特性&#xff0c;掌握其优缺点。 2.实验结束后&#xff0c;对相关内容进行总结。 二、实验内容 1.模式应用场景说明 原型模式&#xff1a;在需要一个类的大量对象的时候&#xff0c;…

现在就是.Net最好的时代!我赞成,谁反对?

2020年.NET Core逆袭冲榜&#xff0c;多榜直接冠军&#xff01;Build2020&#xff0c;发布多款产品赋能.NET开发者&#xff01;截止5月&#xff0c;腾讯&#xff0c;阿里&#xff0c;特斯拉等大厂都在招聘.NET&#xff01;这些征兆&#xff0c;都预示着.NET的春天即将到来&…

[JavaWeb-JavaScript]JavaScript_Array数组对象

Array:数组对象 1. 创建&#xff1a;1. var arr new Array(元素列表);2. var arr new Array(默认长度);3. var arr [元素列表];2. 方法join(参数):将数组中的元素按照指定的分隔符拼接为字符串push() 向数组的末尾添加一个或更多元素&#xff0c;并返回新的长度。3. 属性len…

如何给Blazor.Server加个API鉴权?

&#xff08;Ant Design of Blazor为努力而生&#xff09;书接上文&#xff0c;上次我们说到了最终选用Blazor.Server来实现了我们的MVP项目&#xff0c;额其实就是博客的增删改查&#xff0c;不过运行还是很爽的&#xff0c;不过是一个小demo&#xff0c;脑子里一直有个声音&a…

结构型模式——桥接模式

一、 实验目的与要求 1.练习使用桥接模式。设计相关的模拟场景并进行实施&#xff0c;验证模式特性&#xff0c;掌握其优缺点。 2.实验结束后&#xff0c;对相关内容进行总结。 二、实验内容 1.模式应用场景说明 相信大家都看过罗老师买奶茶的情节&#xff0c;现实生活中也是一…

[JavaWeb-Bootstrap]CSS样式和JS插件

CSS样式和JS插件 1. 全局CSS样式&#xff1a;* 按钮&#xff1a;class"btn btn-default"* 图片&#xff1a;* class"img-responsive"&#xff1a;图片在任意尺寸都占100%* 图片形状* <img src"..." alt"..." class"img-ro…

TypeScript+vue使用与迁移经验总结

源宝导读&#xff1a;ERP平台的前端底层使用了Vue作为组件的基础架构&#xff0c;而使用了TypeScript语言进行组件的封装与开发。本文将简要介绍平台在使用TypeScript和Vue框架进行老功能重构时的经验总结。一、背景下面主要探讨是以下三个方面&#xff1a;目前项目中使用到的v…

结构型模式——适配器模式

一、 实验目的与要求 1.练习使用适配器模式。设计相关的模拟场景并进行实施&#xff0c;验证模式特性&#xff0c;掌握其优缺点。 2.实验结束后&#xff0c;对相关内容进行总结。 二、实验内容 1.模式应用场景说明 现在喜欢上网的年轻人越来越多&#xff0c;而家里面的电脑满足…

[JS-BOM]BOM概念与组成

BOM: 1. 概念&#xff1a;Browser Object Model 浏览器对象模型* 将浏览器的各个组成部分封装成对象。2. 组成&#xff1a;* Window&#xff1a;窗口对象* Navigator&#xff1a;浏览器对象* Screen&#xff1a;显示器屏幕对象* History&#xff1a;历史记录对象* Location&am…

[号外] Blazor wasm 其实也挺快!

之前第一篇的时候&#xff0c;因为没有用任意配置&#xff0c;导致wasm加载很慢&#xff0c;我就感觉不会是这样的&#xff0c;为了不误导小盆友&#xff0c;所以还是趁着周末研究了一波&#xff0c;做了相关的调整&#xff0c;经过测试&#xff0c;速度基本可观了&#xff0c;…

单调栈思维 2021年度训练联盟热身训练赛第三场——K题 Summer Trip

题意&#xff1a; 给你一个字符串&#xff0c;问其子串中有多少个满足&#xff1a; 1.子串头尾字母不相同&#xff1b; 2.子串内部字母与头尾字母不相同&#xff1b; 3.子串长度大于等于2&#xff1b; 问有多少个这样的字串&#xff1f; 题目&#xff1a; Leo has started a…

WinUI 3 试玩报告

1. 什么是 WinUI 3#在微软 Build 2020 开发者大会上&#xff0c;WinUI 团队宣布可公开预览的 WinUI 3 Preview 1&#xff0c;它让开发人员可以在 Win32 中使用 WinUI。WinUI 3 Preview 1 包含新的 VisualStudio 项目模板&#xff0c;可以创建面向 .NET 5 的 C# 和 C/Win32 项目…