JAVA栈实例—括号匹配

 1 import java.util.Stack;
 2
 3 public class test {
 4     public static void main(String[] args){
 5         System.out.print(isStringBalanced("asdasd)d"));
 6     }
 7
 8     public static boolean isStringBalanced(String string){
 9          final char openrb = ‘(‘;   //定义常量
10          final char closerb = ‘)‘;
11          Stack<Character> s = new Stack<Character>();  //新建栈
12          for (int i=0;i<string.length();i++){
13             if (string.charAt(i) == openrb){
14                 s.push(openrb);                    //压入占顶
15             }else if(string.charAt(i) == closerb){
16                 if (s.empty()){                    //是否为空
17                     s.push(closerb);
18                 }else if ((char)s.peek() == openrb){  //查看栈顶元素,但是不弹出
19                     s.pop();                       //弹出栈顶元素
20                 }else{
21                     s.push(closerb);
22                 }
23             }
24
25          }
26          return s.empty();
27     }
28 }
时间: 2024-08-11 09:56:01

JAVA栈实例—括号匹配的相关文章

imooc数据结构探险-栈篇 栈应用括号匹配二 由群友启发改良james_yuan老师算法

如图所示 引用群友内容 //老师代码有点麻烦了,不用声明两个mystack的,直接判断是否是左括号, //是的话就在mystack中push另一半括号:如果是右括号且又不是需要的括号, //就直接打印不匹配,如果是需要的右括号,就pop掉左括号.最后看mystack中栈顶是否为0,为0则打印括号匹配 /* 老师最后一点其实错了,default 其实没有必要写,只要把pNeedStack->pop(currentNeed)改为 if(!pNeedStack->pop(currentNeed))

一起talk C栗子吧(第二十回:C语言实例--括号匹配)

各位看官们,大家好,前几回中咱们说了堆栈的原理,并且举了实际的例子进行解说,这一回咱们说的例 子是:括号匹配.括号匹配使用了堆栈的原理,大家可以从例子看出来,所以我们把它们放在一起.闲话 休提,言归正转.让我们一起talk C栗子吧! 看官们,所谓的括号匹配,就是给了一连串括号,里面有各种类型的的括号,然后确定该串中的括号是否 是一一 匹配的.例如:({[]})这串括号中的括号就是匹配的.因为串中的括号都是成对出现.(({)这串括号就 不是匹配的,串中{没有与它配对的括号,而且与(匹配的括号数量

数据结构--利用栈实现括号匹配

/*下午打球去了,虐菜了*/ <pre name="code" class="cpp">#ifndef _MATCH_H_ #define _MATCH_H_ #include<iostream> #include<string.h> #include<assert.h> using namespace std; typedef char ElemType; #define STACK_INIT_SIZE 50 typ

第一篇博客——利用“栈”进行括号匹配的算法

bool BracketsCheck(char *str){ InitStack(S); int i=0; while(str[i]!='\0'){ switch(str[i]){ case'(':Push(S,str[i]);break; case'[':Push(S,str[i]);break; case'{':Push(S,str[i]);break; case')': Pop(S,e); if(e!='(')return false; break; case']': Pop(S,e);

(编程训练)再回首,数据结构——(升级版)使用栈判断括号匹配

点击打开 基础版 最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会. 希望这些能提供给初学者一些参考. 在VC++6.0下可运行,当初还写了不少注释. /* ********************************************************** * 3-2 * 设在一个算术表达式中允许使用3种括号:圆括号"(".")",方 * 括号"["."]",花括号"

Python 用栈判断括号匹配

#!/usr/bin/python # -*- coding: UTF-8 -*- from pythonds.basic.stack import Stack def parChecker(symbolString): s = Stack() balanced = True index = 0 while index < len(symbolString) and balanced: symbol =symbolString[index] #左边括号入栈 if symbol == '(': s

栈之括号匹配

#include<stdio.h> #include<string.h> #define MaxSize 100 void ExpIsCorrect(char exp[],int n); typedef char DataType; typedef struct { DataType stack[MaxSize]; int top; }SeqStack; void StackInitiate(SeqStack *s)//初始化 { s->top=0; } int StackN

栈(括号匹配)

假设一个算术表达式中可以包含三种括号:圆括号"("和")",方括号"["和"]"和花括号"{"和" ",且这三种括号可按任意的次序嵌套使用(如:-[-{- -[-]-]-[-]-(-)-).编写判别给定表达式中所含括号是否正确配对出现的算法.输出结果YES 或者 NO. Input 5+{[2X5]+2} Output YES Sample Input 8-[{2+7]} Sample

20. Valid Parentheses(用栈实现括号匹配)

Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correct