小辉浅谈括号匹配问题

括号匹配是很久以前的一个题,但是以前没有做出来 ,今天看数据结构,发现可以用栈做,比数组要简单的多,首先讲一下这个括号匹配时什么问题,其实就是一个简单的模拟题。

大致体一是这样的 [()()],就是语法判断你的括号符不符合规定  ,以前是想数组模拟一下,但是感觉有点烦,一直没有做,(这种还是不要学,)今天讲完数据结构,发现用栈很好写,吃完饭就写了一下,自己测了几个样例都过了 ,后面有做了一下优化,大致是这个意思

字有点弱,还能看清  ,大约就是这个意思

还可以作一点剪枝 就是这个字符串是奇数长度的时候,肯定不匹配

#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
char s[10000];
int main(){
    stack<char>q;
    scanf("%s",s);
    int l=strlen(s);
    int flag=1;
    if(l%2) printf("ERROR\n");
    else{
    for(int i=0;s[i]!='\0';i++){
        if(s[i]=='['||s[i]=='('||s[i]=='{')
            q.push(s[i]);
        else
        {
             char ch=q.top();
             if(ch=='('){
                    if(s[i]==')'){
                            q.pop();
                        continue;
                    }
                    else
                    {
                        flag=0;
                        printf("ERROR\n");
                        break;
                    }
                }
                else if(ch=='{')
                    {
                        if(s[i]=='}')
                        {
                            q.pop();
                            continue;
                        }
                        else{
                            flag=0;
                            printf("ERROR\n");
                            break;
                        }
                    }
                else
                {
                    if(s[i]==']'){
                        q.pop();
                        continue;
                    }
                    else
                    {
                        flag=0;
                        printf("ERROR\n");
                        break;
                    }
                }
        }
    }
    if(flag){

        printf("完全匹配\n");
    }
}
    }
时间: 2024-10-10 04:42:37

小辉浅谈括号匹配问题的相关文章

前后端差异更小了——浅谈ES(ECMAScript)6

2015年6月,ES6正式发布.至今一年多的时间内,各个浏览器也对支持ES6做出了很大的改善,所以同学们无需顾忌你写代码的浏览器不认识~ 这么久的东西一定早有大神剖析过,今天我们以一个后端菜鸟的视角重新解读下ES6加入的新语法. 首先很开心,ES6对class(类)的支持上升到了一个新高度,允许构造和继承,新语法看上来是这样的: //继承 class parent { constructor(par) { this.Name = par; console.log('[父类的构造方法 ' + th

小dai浅谈通信网络(一)——引子

说起通信网络,首先来看一个场景: 场景模式: 小明和小刚在闹市碰面. 小明对小刚大声喊道:"小刚,你好啊!" 小刚摇手答到:"你好,小明!" 就这段对话,从通信角度能看到多少信息勒? 1.两个人: 小刚和小明 2.代表两个人的称呼"小明""小刚" 3.由于是当面诉说,采用的传播介质是空气: 4.传播的信号是声波 5发生装置是声带.舌头.嘴巴 6.收听装置是耳朵 7.他们说的是中文,比如小明的发声"小刚",小

极限工坊淘小咖浅谈:实体餐饮业的变革,线上拥抱线下,小程序的新零售

随着互联网的极速发展,人们的日常生活节奏逐渐加快,实体商家的经营的商铺营业额已经到达率了瓶颈期,一些经常关注互联网的商家早已经察觉小程序这是个新的风口,而互联网的发展,也已经让实体商家不得不做起线上+线下的营业模式. 餐饮业作为实体行业的代表,即使餐品再好吃.服务再优质,也有着非常大的局限性,客户离开店面之后,就无法持续提供优质的服务.外卖和餐饮APP的出现,虽然在很大程度上处理了这个问题,但对于绝大多数中小型餐饮店主来说,他们很难像巴奴火锅.德克士这样"地主"一样的知名度,有足够的物

浅谈:小程序的开发模式

浅谈:小程序的开发模式 小程序开发,主要可分为三种模式: 1.基于现成模板进行编辑的模式这种模式下,模板是最为首要的,用户首先选择一个最为接近需求的模板,然后采用编辑.配置的方式对模板的名字.标题.栏目名称/数量.图片等进行修改.优点:简单快捷,如果图片素材等提前准备到位了,通过模板编辑配置的模式开发微信小程序,一般1.2个小时就能搞定!缺点:1)找到匹配度足够满意的模板并不容易:这种模式比较依赖于模板供应方的模板库丰富程度,一般来说,最终用户的需求都是千变万化的,往往都是各有各的诉求,即便模板

浅谈小网站SEO的几点建设方法

现在很多小企业也开始建站,那该怎样做好小企业的seo呢? 1.通过seo树立品牌 对于小企业来说,当然不能做到像大型企业一样品牌人人皆知.但是与其他同等小企业.竞争对手相比,如果能够在搜索引擎结果中表现良好,就可以树立 良好的形象.所谓"排名第一就是品牌",在搜索引擎中排名第一就能让客户感觉到企业是一个充满活力.办事认真.积极上进的组织,客户第一面就打上了良 好的印象分.排名第一带来的客户在互联网真是数不甚数.那么如何通过seo树立品牌呢?第一,要使自己的企业名.地区行业关键字排名第一

【菜鸟学php】小菜鸟由帝国备份王在Wamp环境下打开500错误浅谈PHP程序员

===================问题情况描述=================== 小弟一直在玩discuz论坛开源程序,这个论坛程序经常涉及到论坛搬家的问题. 今天我在本地Wamp环境下,用开源软件帝国备份王2010进行数据库备份数据,结果打开发现报错500! 这真是坑爹了,回想下以前自己使用这个开源程序进行备份也不下于十几次了,大部分都正常成功, 但也不乏出现这种情况的,小弟之前一般遇到这种问题, 都是直接忽略,换其他办法来进行备份,但是用惯了帝国备份王,换其他的方法备份数据,总感觉难

浅谈c语言typedef 与结构体指针(个人小经验)

 #include<stdio.h> #include<string.h> typedef struct emp{ char sex[8]; char name[15]; int age; }*emp;//这里我们用typedef把emp这个结构体变成了*emp这种指向结构体成员的结构体指针 /*typedef struct emp{ char sex[8]; char name[15]; int age; }pi,*emp;//为了程序的可读性最好不要这样声明*/ int m

浅谈大端和小端

最近在看关于大端小端的问题首先请允许我引用一段 一.大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的<格利佛游记>:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战.战争的原因:大家都知道,吃鸡蛋的时候,原始 的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令所有的子民吃鸡蛋的时候,必须 先打破鸡蛋较小的一端,违令者重罚.然后老百姓对此法令极为反感,

浅谈自然语言处理基础(下)

命名实体识别 命名实体的提出源自信息抽取问题,即从报章等非结构化文本中抽取关于公司活动和国防相关活动的结构化信息,而人名.地名.组织机构名.时间和数字表达式结构化信息的关键内容,所以需要从文本中去识别这些实体指称及其类别,即命名实体识别和分类. 21世纪以后,基于大规模语料库的统计方法成为自然语言处理的主流,以下是基于统计模型的命名实体识别方法归纳: 基于CRF的命名实体识别方法 基于CRF的命名实体识别方法简便易行,而且可以获得较好的性能,广泛地应用于人名.地名和组织机构等各种类型命名实体的识