括号匹配算法 java_使用栈实现括号匹配算法-java
题目:检验符号是否匹配. '['和']', '('和')'成对出现时字符串合法. 例如"[][]()", "[[([]([])()[])]]"是合法的; "([(])", "[())"是不合法的.
遍历字符串的每一个char, 将char与栈顶元素比较. 如果char和栈顶元素配对, 则char不入栈, 否则将char入栈. 当遍历完成时栈为空说明字符串是合法的.
代码如下:
package MyArrayStack;
public class MyArrayStack {
//定义类,使用一个缺省泛型控制输出对象
private Object[] objs=new Object[16];//实例化一个数组,作为栈的实体对象
private int size=0;
//定义一个int变量,用于作为插入弹出的标记,size始终指向可以插入的位置,初始化为0,栈空
//判断栈空
public boolean isEmpty(){
return size==0; //如果栈空返回1,否则返回0
}
//清空栈
public void clear(){
for(int i=0;i
objs[size]=null;
}
size=0;
}
//返回栈的长度
public int length(){
return size;
}
//压栈操作
public boolean push(T data){
if(size>=objs.length){ //如果size>当前栈长度,调用扩容方法
resize();
}
objs[size]=data; //将当前元素赋值到栈中
size++;//size移动到新的位置
return true;
}
//出栈操作
@SuppressWarnings("unchecked")
public T pop(){
if(size==0){
return null; //如果栈长为0,返回空
}
size--; //现将size指向有值的位置
return (T) objs[size]; //取出size,这时不需移动size位置。
}
//扩容栈
private void resize(){
Object[] temp=new Object[objs.length*3/2+1]; //先将栈的实际容量扩大为原来的1.5倍
for(int i=0;i
temp[i]=objs[i]; //将原有元素赋值到temp中
objs[i]=null; //原栈元素置空
}
objs=temp; //将temp赋值到objs中,使之成为新的栈元素
}
public String toString(){
StringBuilder sb=new StringBuilder();
sb.append("MyArrayStack:[");
for(int i=0;i
sb.append(objs[i].toString());
if(i!=size-1){
sb.append(",");
}
}
sb.append("]");
return sb.toString();
}
public static void main(String[] args){
//使用字符类Character声明泛型
MyArrayStackms=new MyArrayStack();
String s="{{}}()(){({){}}}";
char[] a=s.toCharArray();
for(int i=0;i
Character t=ms.pop();
//每次会先出栈当前的栈顶元素
if(t==null){
ms.push(a[i]);
}
else if(t=='{'&&a[i]=='}'){
//如果匹配,就不进行动作处理,栈顶元素已经出栈
}else if(t=='('&&a[i]==')'){
}
else{
//不匹配的话,将栈顶元素和新元素一起出栈
ms.push(t);
ms.push(a[i]);
}
/*String s1=ms.toString();
System.out.println(s1);*/
}
if(ms.length()==0){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
括号匹配算法 java_使用栈实现括号匹配算法-java相关推荐
- 字符串匹配算法Java_如何简单理解字符串匹配算法?
这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...
- 括号匹配算法 java_括号匹配算法
括号匹配算法 题目来自网络搜集和常考算法,如有侵权请联系我 题目描述 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的 ...
- python括号匹配算法_使用Python的栈实现括号匹配算法
利用Python列表实现一个栈的结构,再使用栈实现括号匹配的算法,所谓的括号匹配是指在编程语言中,括号是成对出现的,最先出现的左括号,对应于最后的右括号,后出现的左括号对应于最新右括号,符合栈的特征 ...
- 【数据结构】【栈】括号匹配算法(可直接运行)
文章目录 1.算法问题 2.算法思路 3.算法实现 4.完整代码 5.运行结果 1.算法问题 假设表达式中允许包含三种括号:().[].{},其嵌套的顺序任意,即([]{})或[()[]{}]等均为正 ...
- C语言详解括号匹配问题(栈的应用 )
文章目录 问题概述 算法思路 不匹配的情况 实现流程图 C语言代码 结果测试 问题概述 检测括号是否成对出现 最后出现的左括号最先匹配(LIFO),和栈的后进先出异曲同工 每出现一个右括号,就抵消(出 ...
- python 判断括号是否匹配_使用Python实现一个栈判断括号是否平衡
栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...
- 顺序栈实现括号匹配的检验(C语言实现)【栈】
原理说明 算法思路 代码演示 原理说明 假设表达式中允许括号嵌套,则检验括号是否匹配的方法可用"期待的急迫程度"这个概念来描述. 我们下面给和例子进行说明: 可能出现的不匹配的情况 ...
- 六十三、栈在括号匹配和表达式求值中的应用
@Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 算法,一门既不容易入门,也不容易精通的学问. 文章目录 括号匹配 数 ...
- python中用函数设计栈的括号匹配问题_数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题...
算法 数据结构 数据结构和算法(Python版):利用栈(Stack)实现括号的匹配问题 在平时写程序当中,我们会经常遇到程序当中括号的匹配问题,也就是在程序当中左括号的数量和右括号的数量必须相等.如 ...
最新文章
- 手机照片导入电脑步骤_手机录屏及电脑录屏操作步骤
- 使用Java进行查询hugegraph_HugeGraph Examples
- elasticdump elasticsearch数据备份与迁移 导入导出
- P2转P3'dict' object has no attribute 'has_key'
- cuSPAESE库:(五)零基索引和一基索引
- 银河水滴张曼:远距离步态识别系统与应用 |量子位沙龙回顾
- QTP模拟鼠标和键盘事件整理
- Jmeter的Throughput有误差与分布式测试时的坑
- Netty中有哪些自带的ChannelHandler?
- mysql 字符串 反转_MySQL笔记之字符串函数的应用
- 【优化求解】基于matlab粒子群算法求解函数极值问题【含Matlab源码 1202期】
- 无人驾驶智能车竞速赛,智能大会无人驾驶比赛
- 基于质谱的蛋白质鉴定,第3节:基于MALDI-MS肽指纹图谱的蛋白质质谱鉴定
- 最全面的应届毕业生落户上海指南(2021)
- Java如何发起http请求
- mybatis自定义枚举类型的转换器以及各种使用场景
- 无法同步因计算机未授权,iTunes无法授权和同步解决办法教程
- 徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么?
- 核磁共振 Nuclear Magnetic Resonance (NMR), H1-NMR, C13-NMR, DEPT, COSY 等分析技术
- Python爬取梨视频并下载【ajax抓包】
热门文章
- 中南大学计算机有网络安全,中南大学2019年大学生网络安全知识竞赛(复赛)成功举行...
- centos6.5 mysql下载_Centos6.5在线安装mysql 8.0详细教程
- asp.net 添加成功弹出个div提示_Word双栏目录怎么做,这3个步骤早知道,让人眼前一亮...
- linux pxe获取ip,linux pxe的构建
- 微信内测版抢先体验,可发 4K 无损视频
- 年会抽奖程序准备好了吗?没有的话,直接来取!
- 你应该知道的7个写出更好的 Java 代码的技巧
- 通过mtd读写flash_Ambiq继续引领低功耗单片机,新款Apollo4将2MB MRAM作为Flash
- rm 空间不释放_rm删除文件之后,空间就被释放了吗?
- 表格全屏显示_2020-2026年中国手机显示屏市场现状研究分析与发展前景预测报告...