括号配对问题

来源:互联网 发布:ios10.3.3完美越狱mac 编辑:程序博客网 时间:2024/05/16 18:29

括号配对问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3[(])(])([[]()])
样例输出
NoNoYes
来源
网络
上传者

naonao






 #include <stdio.h>#include <stdlib.h>#include <string.h>static char pairs[2][2] = {{'[', ']'}, {'(', ')'}};struct stack{    char data[10000];    int top;};void init_stack(struct stack *s){    s->top = -1;}void push_stack(struct stack *s, char value){    s->data[++s->top] = value;}void pop_stack(struct stack *s){    --(s->top);}int is_empty(struct stack *s){    return (s->top == -1);}char stack_top(struct stack *s){    return s->data[s->top];}int is_first_pair(char a){    int i;    int n = sizeof(pairs) / sizeof(pairs[0]);    for ( i = 0; i < n; i++ ) {        if ( pairs[i][0] == a ) {            return 1;        }    }    return 0;}int is_pair(char a, char b){    int i;    int n = sizeof(pairs) / sizeof(pairs[0]);    for ( i = 0; i < n; i++ ) {        if (pairs[i][0] == a) {            if (pairs[i][1] == b) {                return 1;            } else {                return 0;             }        }    }    return 0;}int check_pair(char *buf, int n, struct stack *s){    int i;    if (n <= 0)        return 0;    for ( i = 0; i < n; i++ ) {        if (is_first_pair(buf[i]))            push_stack(s, buf[i]);        else if ( !is_empty(s) && is_pair(stack_top(s), buf[i]) )             pop_stack(s);        else            return 0;    }    if (is_empty(s))        return 1;    else         return 0;}    intmain( int argc, char **argv ){    int n;    char buf[10000];    struct stack s;    int i;    scanf("%d", &n);    for ( i = 0; i < n; i++ ) {        init_stack(&s);        buf[0] = '\0';        scanf("%s", buf);         if (check_pair(buf, strlen(buf), &s))            printf("Yes\n");        else            printf("No\n");    }    return 0;}        



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为开机键坏了怎么办 抖音账号已重置怎么办 抖音账号被重置怎么办 吃鸡账号密码忘了怎么办 微信只记得账号忘了手机号怎么办 红米3开机键失灵怎么办 晚自习教室有许多虫子怎么办 泰迪吃草又呕吐怎么办 手机不断收到验证码信息怎么办 樱桃吃多了上火怎么办 过年不想回婆婆家过怎么办 旅行箱提手坏了怎么办 影棚人物后面有影子怎么办 微信运动图标不见了怎么办 逆光拍摄人黑了怎么办 单反镜头刮花了怎么办 股东各50股份不同意退股怎么办 退股没有协议他不愿意退钱怎么办 s7刷机有三星帐号id怎么办 做主播留不住人怎么办 直播间留不住人怎么办 淘宝直播间留不住人怎么办 干了一个月不发工资怎么办 16岁长白色头发怎么办 腾讯乘车码解约了怎么办 蓝洞棋牌客封号怎么办 草莓被蚂蚁吃了怎么办 脖子被种了草莓怎么办 2岁的宝宝说脏话怎么办 欠钱的人跑路了怎么办 美国非婚生子父亲不认怎么办 孕4个月肚子胀气怎么办 8个月孕妇感冒了怎么办 孕8个月感冒鼻塞怎么办 怀孕八个月感冒了怎么办 孕八个月咳嗽了怎么办 享物说同城自提怎么办 锤基意外怀孕怎么办 08 蛐蛐罐底翻砂了怎么办 剑网3中被盗号后怎么办 本人想离婚对方躲避怎么办