精华内容
下载资源
问答
  • 栈括号匹配

    2018-07-28 17:35:12
     对于每组数据输出“YES”表示当前字符串中的括号匹配的,否则输出“NO”(不包括引号) SampleInput () (<)> SampleOutput YES NO 题解:利用 代码: #include<bits/st...

    Input

     输入包括多组测试数据,每组数据是一个字符串,字符串只包含“(){}[]<>”等字符。

    Output

     对于每组数据输出“YES”表示当前字符串中的括号是匹配的,否则输出“NO”(不包括引号)

    SampleInput

    () 
    (<)>

    SampleOutput

    YES 
    NO

    题解:利用栈

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    char e[2000000];
    bool match(stack<char> s,char e[],int len)
    {
        for(int i=0;i<len;i++)
        {
            if(e[i]=='('||e[i]=='['||e[i]=='<'||e[i]=='{')
                s.push(e[i]);
            if(e[i]==')')
            {
                if(s.empty())
                    return 0;
                else if(s.top()=='(')
                            s.pop();
                else
                    return 0;
            }
            if(e[i]==']')
            {
                if(s.empty())
                    return 0;
                else if(s.top()=='[')
                    s.pop();
                else
                    return 0;
            }
            if(e[i]=='>')
            {
                if(s.empty())
                    return 0;
                else if(s.top()=='<')
                    s.pop();
                else
                    return 0;
            }
            if(e[i]=='}')
            {
                if(s.empty())
                    return 0;
                else if(s.top()=='{')
                    s.pop();
                else
                    return 0;
            }
        }
        if(s.empty())
            return 1;
        else
            return 0;
    }
    int main()
    {
        while(cin>>e)
        {
            stack<char> s;
            int len=strlen(e);
            if(match(s,e,len)&&len%2==0)
                printf("YES\n");
            else
                printf("NO\n");
        }
        return 0;
    }
    

     

    展开全文
  • 括号匹配

    2017-10-31 10:27:03
    遇到所有的左括号,入栈,(标记为1,【标记为2,{标记为3 遇到所有的右括号,取栈顶元素,)相对应的是否为1,】是否为2,}是否为3 如果不是,break出来 #include #include #include #include using namespace...


    遇到所有的左括号,入栈,(标记为1,【标记为2,{标记为3

    遇到所有的右括号,取栈顶元素,)相对应的是否为1,】是否为2,}是否为3

    如果不是,break出来

    #include <iostream>
    #include<stack>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int main()
    {
        char a[100];
        int i,flag=0,len;
        stack<int> s;
        gets(a);
        len=strlen(a);
        for(i=0;i<=len-1;i++){
            if(a[i]=='(')
                s.push(1);          //左括号标记入栈
            if(a[i]=='[')
                s.push(2);
            if(a[i]=='{')
                s.push(3);
            if(a[i]==')'){          //右括号对比出栈
                if(s.empty()==1){
                    flag=1;
                    break;
                }
                else{
                    if(s.top()==1)
                        s.pop();
                    else{
                        flag=1;
                        break;
                    }
                }
            }
            if(a[i]==']'){
                if(s.empty()==1){
                    flag=1;
                    break;
                }
                else{
                    if(s.top()==2)
                        s.pop();
                    else{
                        flag=1;
                        break;
                    }
                }
            }
            if(a[i]=='}'){
                if(s.empty()==1){
                    flag=1;
                    break;
                }
                else{
                    if(s.top()==3)
                        s.pop();
                    else{
                        flag=1;
                        break;
                    }
                }
            }
        }
        if(flag==0)
            if(s.empty()==1)
                printf("YES\n");
            else
                printf("NO\n");
        else
            printf("NO\n");
        return 0;
    }
    


    展开全文
  • 利用栈括号匹配

    2015-10-24 17:37:35
    利用所进行的括号匹配,简单的关于的利用的题目
  • 全部代码:package brackets;import java.util.Stack;public class Brackets {public static boolean isMatch (String str) {Stack stack = new Stack();boolean isMatch = true;for (Character c : str.toCharArray...

    全部代码:

    package brackets;

    import java.util.Stack;

    public class Brackets {

    public static boolean isMatch (String str) {

    Stack stack = new Stack();

    boolean isMatch = true;

    for (Character c : str.toCharArray()) {

    if (c == '(')

    stack.push(c);

    else if (c == ')') {

    if (stack.isEmpty()) {

    isMatch = false;

    break;

    }

    stack.pop();

    }

    }

    if (!stack.isEmpty()) isMatch = false;

    return isMatch;

    }

    public static void main(String[] args) {

    String str1 = "(sdfdsf((ddf,sa++dsf))";

    System.out.println(isMatch(str1));

    String str2 = "(234,23(df)323423))";

    System.out.println(isMatch(str2));

    String str3 = "((sdfsad,sdf(sdfs,da)))";

    System.out.println(isMatch(str3));

    }

    }

    展开全文
  • 顺序栈括号匹配问题

    2020-07-21 08:40:41
    使用顺序解决括号匹配问题 括号匹配问题:包括三种类型的括号()[]{}和其他字符,判断是否存在对应的左右括号 举例: [({a}s)]---满足条件 [({a}s)]---不满足条件 */ #include <iostream> using namespace ...
    /*
    使用顺序栈解决括号匹配问题
    括号匹配问题:包括三种类型的括号()[]{}和其他字符,判断是否存在对应的左右括号
    举例:
    [({a}s)]---满足条件
    [({a}s)]---不满足条件
    */
    #include <iostream>
    using namespace std;
    typedef char Elemtype;
    const int MAXSIZE = 100;
    struct SqStack{
    	Elemtype data[MAXSIZE];
    	int top;	//栈顶指针
    };
    void InitStack(SqStack &s){
    	s.top = -1;	//栈顶指针指向-1表示栈空
    }
    bool Push(SqStack &s, Elemtype e){
    	if(s.top==MAXSIZE-1){
    		cout << "栈满" << endl;
    		return false;
    	}
    	s.data[++s.top] = e;
    	return true;
    }
    bool StackEmpty(SqStack s){
    	if(s.top==-1)
    		return true;
    	return false;
    }
    bool Pop(SqStack &s, Elemtype &e){
    	if(s.top==-1){
    		cout << "栈空" << endl;
    		return false;
    	}
    	e = s.data[s.top--];
    	return true;
    }
    bool BasketMatch() {
    	Elemtype c, c1;
    	SqStack s;
    	InitStack(s);
    	while((c=getchar())!='\n'){	//换行退出
    		switch(c){
    			case '(':
    			case '[':
    			case '{':
    				Push(s, c);
    				break;
    			case ')':
    				if(StackEmpty(s)) return false;
    				Pop(s, c1);
    				if(c1!='(')
    					return false;
    				break;
    			case ']':
    				if(StackEmpty(s)) return false;
    				Pop(s, c1);
    				if(c1!='[')
    					return false;
    				break;
    			case '}':
    				if(StackEmpty(s)) return false;
    				Pop(s, c1);
    				if(c1!='{')
    					return false;
    				break;
    				
    		}
    	}
    	//处理右括号和左括号匹配,但是左括号比右括号多的情况。举例:({} 
    	if(StackEmpty(s))	
    		return true;
    	return false;
    }
    int main(){
    	if(BasketMatch()) 
    		cout << "输入括号匹配" <<endl;
    	else
    		cout << "输入括号不匹配" << endl; 
    	return 0;
    }
    

    程序小白,如果代码有任何问题,欢迎指出。

    展开全文
  • 栈括号匹配的校验

    2018-10-21 22:43:15
    假设表达式允许包含两种括号:圆括号和放括号,其嵌套的顺序随意即({{...先定义一个括号入栈(s) 将中的元素出栈(f) 如果是第一个元素,直接入栈(s------&gt; f)。 如果是第二个元素,引入一个...
  • uva673 括号匹配

    2015-06-07 15:18:32
    673 - Parentheses Balance括号匹配输入一些由小括号和中括号组成的字符串,判断字符串是否正确。的基本应用,水题。自己比较得意的是如何判断是否匹配。方法是: little = ‘(’ + ‘)’; middle = ‘[’ + ‘]...
  • leetcode 括号匹配

    2014-07-18 06:54:00
    遇到左括号入栈,遇到右括号出栈找匹配,为空或不匹配为空, public class Solution { public boolean isValid(String s) { char c[]=s.toCharArray(); Stack&l...
  • 括号匹配程序

    2016-03-25 00:08:08
    // 对于输入的任意一个字符串,检验括号是否配对 SqStack s; SElemType ch[ 80 ],*p,e; if (InitStack(s)) // 初始化成功 { //printf("请输入表达式\n"); gets(ch); p=ch; while (*p) // 没到串尾...
  • "括号匹配正确!!!\n" ); } int main() { char a[] = "(())abc{[(])}" ; char b[] = "(()))abc{[]}" ; char c[] = "(()()abc{[]}" ; char d[] = "(())abc{[]()}" ; MatchBrackets(a); ...
  • 括号匹配这里我们要讨论的问题是,如何对一个字符串中的左右括号是否完全匹配进行判断,那么我们可以想到,如果字符串中的括号是依次(...)出现的,我们可以认为括号是匹配的.那么我们可以遇到左括号时,就把左括...
  • 若字符是左运算符,则入栈若字符时右运算符,当为空时报错否则,将栈顶元素弹出,若不匹配,则报错最后,字符读完后,非空,则报错代码:Stack类package cn.edu.tju.stack;public class Stack {public static ...
  • 问题: 输入一系列的括号,判断格式是否正确这里直接用java写好的的实现较简单,不单独手写了,可以用数组实现,也可以用链表实现import java.util.Collection;import java.util.HashMap;import java.util...
  • 利用Python列表实现一个的结构,再使用实现括号匹配的算法,所谓的括号匹配是指在编程语言中,括号是成对出现的,最先出现的左括号,对应于最后的右括号,后出现的左括号对应于最新右括号,符合的特征写一个...
  • 实现括号匹配

    2016-03-28 20:22:43
    C语言实现实现括号匹配,很好用,有需要的来下载。
  • 使用顺序实现括号匹配
  • 使用Python的实现括号匹配算法发布时间:2020-08-05 22:12:19来源:51CTO阅读:293作者:wx5a4c600866558利用Python列表实现一个的结构,再使用实现括号匹配的算法,所谓的括号匹配是指在编程语言中,括号是成...
  • 栈括号进行匹配

    2016-07-20 11:57:01
    /*借助进行括号匹配:  如果为左括号,压入栈中  如果右括号,  如果为空,匹配失败  取栈顶元素进行匹配,不匹配失败  输入完成,不为空匹配失败*/ #define STACKSIZE 10  #define ...
  • 利用Python列表实现一个的结构,再使用实现括号匹配的算法,所谓的括号匹配是指在编程语言中,括号是成对出现的,最先出现的左括号,对应于最后的右括号,后出现的左括号对应于最新右括号,符合的特征写一个...
  • 利用实现括号匹配

    2020-05-27 22:09:54
    C语言利用实现括号匹配
  • 括号匹配应用的一个经典问题,题目判断一个文本中的括号是否闭合,如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括号是否闭合思路使用后进先出的原则, 当字符是([{之一时, 入栈当字符是)]}之一时...
  • 如何使用来判定括号是否匹配对于给定的表达式,可以使用来实现括号匹配判定,这个算法在编译器中非常重要,解析器每次读入一个字符,如果字符是一个开分隔符,如(,【,{,入栈,若读入的是闭分隔符),】,},...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,013
精华内容 2,005
关键字:

栈括号匹配