java版括号匹配检测

做一个空栈,读入字符直到结尾.如果读入一个封闭符号,空栈时报错;非空时弹出栈尾字符,如果不匹配则报错.否则读入为开放字符,压入栈中.最后如果栈空,返回true.

其中用到MyStack类,详情请见

 1 public class KuohaoJiancha {
 2     private char [] item = {‘(‘,‘)‘,‘[‘,‘]‘,‘{‘,‘}‘};
 3     private MyStack stack = new MyStack();
 4     private char[] str;
 5     private int currentNum;
 6     public KuohaoJiancha(String str){
 7         this.str = str.toCharArray();;
 8     }
 9
10     public boolean display(){
11         for(int i = 0; i < str.length; i++){
12             currentNum = charNumber(str[i]);
13             if(misByStackIsEmpty(str[i]))
14                 return false;
15
16             if(currentNum % 2 == 1) {
17                 if (currentNum - charNumber((char) stack.pop()) != 1)
18                     return false;
19             }
20             else stack.push(str[i]);
21         }
22         return true;
23     }
24
25     private int charNumber(char c){
26         int i = 0;
27         for(; i < 6; i++){
28             if(c == item[i])
29                 break;
30         }
31         return i;
32     }
33
34     private boolean misByStackIsEmpty(char c){//如果读入一个封闭符号,空栈时报错
35         if(stack.isEmpty())
36             if(currentNum % 2 == 1)
37                 return true;
38         return false;
39     }
40
41 }
时间: 2024-10-08 23:47:20

java版括号匹配检测的相关文章

华为上机练习题--括号匹配检测

题目: 输入一串字符串,其中有普通的字符与括号组成(包括'('.')'.'[',']'),要求验证括号是否匹配,如果匹配则输出0.否则输出1. Smple input:dfa(sdf)df[dfds(dfd)]    Smple outPut:0 分析: 类似于括号字符匹配这类的问题, 我们可以模拟栈的操作来进行验证, 这样问题就简单了, 就是栈的操作 代码如下: package com.wenj.test; import java.util.ArrayList; import java.uti

STL版 括号匹配(感觉不如之前自己用数组模拟的跑的快)

数据结构实验之栈四:括号匹配 Time Limit: 1000MS Memory limit: 65536K 题目描述 给你一串字符,不超过50个字符,可能包括括号.数字.字母.标点符号.空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配. 输入 输入数据有多组,处理到文件结束. 输出 如果匹配就输出“yes”,不匹配输出“no” 示例输入 sin(20+10) {[}] 示例输出 yes no 注意:读入的字符串里可能含有空格哦! #include <iostream> #i

C++括号匹配检测(用栈)

输入一串括号,包括圆括号和方括号,()[],判断是否匹配,即([]())或[([][])]为匹配的正确的格式,[(])或([())为不匹配的格式. #include<iostream>#include<string>#include<stack>using namespace std;int main(){ string str; getline(cin,str); stack<char>s; for(int i=0;i<str.size();i++)

数据结构-栈的实现之括号匹配检测

假设表达式中只允许两种括号:().{}:正确表达顺序为:()或{}或({})或{({}{})}的形势:如{(}或(})或({)}的表达形势均不对.算法的设计思想: 出现左括弧则进栈: 出现右括弧则首先检测栈是否为空, 若栈空则表明此右括弧多余,表达式不匹配. 否则和栈顶数据比较,若匹配则栈顶出栈. 否则表明表达式不匹配: 最后若栈空且没有做鱼右括弧则匹配正确,否则表明不匹配. 实现代码如下(Stack.h头文件为之前写的数据结构-栈的顺序结构中写的数组那个方法,用到了里面栈的结构和连个基本栈操作

栈应用之 括号匹配问题(Python 版)

栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出当时的栈顶元素与之匹配 如果匹配成功则继续,发现匹配失败时则以检查失败结束 1 def check_parens(text) : 2 # 括号匹配检查函数,text 是被检查的正文串 3 parens = "(){}[]" 4 open_parens = "({[" 5

排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结束.时间复杂度:O(n^2) 选择排序:每次在无序队列中"选择"出最大值,放到有序队列的最后,并从无序队列中去除该值(具体实现略有区别).时间复杂度:O(n^2) 直接插入排序:始终定义第一个元素为有序的,将元素逐个插入到有序排列之中,其特点是要不断的 移动数据,空出一个适当的位置,把待插

AKKA文档(java版)

目前我正在翻译AKKA官网文档.翻译:吴京润 译者注:本人正在翻译AKKA官网文档,本篇是文档第一章,欢迎有兴趣的同学加入一起翻译.更多内容请读这里:https://tower.im/projects/ac49db18a6a24ae4b340a5fa22d930dc/lists/ded96c34f7ce4a6bb8b5473f596e1008/show/https://tower.im/projects/ac49db18a6a24ae4b340a5fa22d930dc/todos/640e53d

括号匹配-记错心得

数据结构课作业8--括号匹配时间限制: 1 Sec 内存限制: 128 MB提交: 278 解决: 113[提交][状态][讨论版]题目描述检查字符串中方括号.圆括号和花括号是否配对输入每个字符串一行,以0表示输入结束输出true 或者 false 每个一行样例输入(12,11,44,[6,[9]),(#)([#],([2],3,1}([#],([2],3,1),7)0样例输出falsefalsetrue 这是一道数据结构课后作业,看着蛮简单的,思路也挺清晰,首先明确错误例子有这些: 1.][

玩转算法系列--图论精讲 面试升职必备(Java版)

第1章 和bobo老师一起,玩转图论算法欢迎大家来到我的新课程:<玩转图论算法>.在这个课程中,我们将一起完整学习图论领域的经典算法,培养大家的图论建模能力.通过这个课程的学习,你将能够真正地,玩转图论算法:) 第2章 图的基本表示千里之行,驶于足下.解决任何有一个图论算法问题,首先需要用基本的数据结构来表示图.在这一章,我们就将探索图的基本表示问题,学习邻接矩阵和邻接表,进而,也让同学们熟悉这个课程的整体代码风格. 第3章 图的深度优先遍历任何一种数据结构,都需要进行遍历.图也不例外.通过深