1355:字符串匹配问题(strs)(方法二)

【题目描述】

字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出:YES,而输入([]),([)]都应该输出NO

【输入】

第一行为一个整数n,表示以下有多少个由括好组成的字符串。接下来的n行,每行都是一个由括号组成的长度不超过255255的字符串。

【输出】

在输出文件中有n行,每行都是YESNO

【输入样例】

复制代码
5
{}{}<><>()()[][]
{{}}{{}}<<>><<>>(())(())[[]][[]]
{{}}{{}}<<>><<>>(())(())[[]][[]]
{<>}{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]
><}{{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]

【输出样例】

复制代码
YES
YES
YES
YES
NO
cpp 复制代码
#include<bits/stdc++.h>

using namespace std;

int ab(char c)

{

  if(c=='<') return 1;

  if(c=='(') return 2;

  if(c=='[') return 3;

  if(c=='{') return 4;

  if(c=='>') return -1;

  if(c==')') return -2;

  if(c==']') return -3;

  if(c=='}') return -4;

}

int main()

{

  int n;

  bool f;

  string s;

  cin>>n;

  for(int j=1; j<=n; j++)

  {

    f=0;

    cin>>s;

    stack<int >a;

    for(int i=0; i<s.size(); i++)

    {

      int k=ab(s[i]);

      if(k>=1)

      {

        if(a.empty())

        {

          a.push(k);

        }

        else if(k<=a.top())

        {

          a.push(k);

        }

        else

        {

          f=1;

          cout<<"NO"<<endl;

          break;

        }

      }

      else

      {

        if(a.empty())

        {

          f=1;

          cout<<"NO"<<endl;

          break;

        }

        else if(a.top()+k==0)

        {

          a.pop();

        }

        else

        {

          f=1;

          cout<<"NO"<<endl;

          break;

        }

      }

    }

    if(f==0)

    {

      if(a.empty())

      {

        cout<<"YES"<<endl;

      }

      else

        cout<<"NO"<<endl;

    }

  }

  return 0;

}
相关推荐
故事和你911 分钟前
洛谷-算法2-2-常见优化技巧1
开发语言·数据结构·c++·算法·动态规划·图论
酉鬼女又兒3 分钟前
JavaLeetCode 第一题「两数之和」:从暴力枚举到一遍哈希表的正确与错误实现,详解HashMap核心知识点及常见陷阱
java·开发语言·数据结构·算法·leetcode·职场和发展·散列表
黎阳之光4 分钟前
视频孪生重构轨交数字孪生新范式|黎阳之光以自主核心技术破解落地难题
大数据·人工智能·算法·安全·数字孪生
云淡风轻~窗明几净8 分钟前
关于TSP的sealine算法与角谷猜想(2026-04-25)
数据结构·人工智能·算法·动态规划·模拟退火算法
wayz119 分钟前
Day 13:朴素贝叶斯分类器
人工智能·算法·机器学习·朴素贝叶斯
前端摸鱼匠10 分钟前
【AI大模型春招面试题29】对比学习(Contrastive Learning)在大模型预训练中的应用?
人工智能·学习·算法·面试·大模型·求职招聘
探物 AI12 分钟前
【感知·单目测距】单目摄像头测距原理与前向碰撞预警(FCWS)实现
算法·目标检测·计算机视觉
gloomyfish12 分钟前
【洞察微瑕】YOLO11+QWEN-VL实现墙体裂缝检测与文字报告生成
人工智能·opencv·算法·计算机视觉
weixin_4130632121 分钟前
比较阅读理解opencv 和 LuminanceHDR中 色调映射Drago算法
opencv·算法·计算机视觉·hdr·色调映射
自我意识的多元宇宙22 分钟前
【数据结构】图----图的应用(拓扑排序)
数据结构·算法