C语言版数据结构与算法pta合集:7-3 括号匹配

本题目要求读入n个字符串,每个字符串是一个括号序列,如“{[()]}”,然后判断每个括号序列是否匹配。

输入格式:

第一个输入为整数n,表示n个序列,然后依次输入n个括号序列。

输出格式:

对于每一括号序列,如果序列中的括号是匹配的,则输出Yes;否则,输出“No”。

输入样例:

在这里给出一组输入。例如:

2
{([])}
([]{}()(())

输出样例:

在这里给出相应的输出。例如:

Yes
No
#include<stdio.h>
#include<string.h>
//主要思路:遇到左括号进栈,遇到右括号出栈。对比失败或最后栈不为空为No.
struct stack{
    int top;
    char arr[20];
};
int main(){
    int n=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        struct stack p;
        p.top=-1;//初始化
        int flag=0;//用于标记是否匹配成功
        char temp[20];
        scanf("%s",temp);
        int len= strlen(temp);
        for(int j=0;j<len;j++){
            if(temp[j]=='{'||temp[j]=='['||temp[j]=='('||temp[j]==')'||temp[j]==']'||temp[j]=='}'){//排除一些乱七八糟的东西
                if(temp[j]=='{'||temp[j]=='['||temp[j]=='('){
                    p.arr[++p.top]=temp[j];//进栈
                }else{
                    if(temp[j]==')'&&p.arr[p.top]=='('||temp[j]==']'&&p.arr[p.top]=='['||temp[j]=='}'&&p.arr[p.top]=='{'){
                        //注意&&的优先级比||高,所以可以这么写。
                        p.top--;//出栈

                    }else{
                        flag=1;//匹配失败直接跳出
                        break;
                    }
                }
            }
        }
//        最后输出
        if(flag==0&&p.top==-1){
            printf("Yes\n");
        }else{
            printf("No\n");
        }
    }
    return 0;
}

 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 21:54:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 21:54:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 21:54:01       87 阅读
  4. Python语言-面向对象

    2024-01-13 21:54:01       96 阅读

热门阅读

  1. 【已解决】C语言如何使用宽字符输出中文

    2024-01-13 21:54:01       64 阅读
  2. mysql修复VIEWRESIDENTHIST 数据

    2024-01-13 21:54:01       59 阅读
  3. Linux数据处理的几个命令

    2024-01-13 21:54:01       94 阅读
  4. 教师如何开发期末考试成绩的查询系统

    2024-01-13 21:54:01       66 阅读
  5. xtu oj 1522 格子

    2024-01-13 21:54:01       57 阅读
  6. 标准 C++ 数据类型和 C++/WinRT

    2024-01-13 21:54:01       56 阅读
  7. Android studio GridView应用设计

    2024-01-13 21:54:01       62 阅读
  8. C++ 并发编程 | 并发世界

    2024-01-13 21:54:01       64 阅读