• 字符串匹配问题


    【问题描述】
           字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出:YES,而输入([]), ([])都应该输出NO。
    【输入格式】strs.in
           文件的第一行为一个整数n,表示以下有多少个由括好组成的字符串。接下来的n行,每行都是一个由括号组成的长度不超过255的字符串。
    【输出格式】strs.out
           在输出文件中有N行,每行都是YES或NO。
    【输入样例】
    5
    {}{}<><>()()[][]
    {{}}{{}}<<>><<>>(())(())[[]][[]]
    {{}}{{}}<<>><<>>(())(())[[]][[]]
    {<>}{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]  
    ><}{{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]
    【输出标例】
    YES
    YES
    YES
    YES
    NO
    错误代码典例made by 吴成志
     
    #include<stack>
    #include<string>
    #include<iostream>
    using namespace std;
    string s;
    stack<int>str;
    
    int main()
    {
    int su=9;
    cin>>s;
    for(int i=0;i<s.size();++i)
    {
    if(s[i]=='(')str.push(2);
    if(s[i]=='[')str.push(3);
    if(s[i]=='<')str.push(1);
    if(s[i]=='{')str.push(4);
    if(s[i]==')'||s[i]==']'||s[i]=='>'||s[i]=='}')
    if(str.empty())
    {
    su=9;    str.pop();
    }
    if(str.empty()>1)
    if(str.top()>su)
    {
    cout<<"NO";
    return 0;
    }
    su=str.top();
    }
    if(str.empty())cout<<"NO";
    else cout<<"OK";
    return 0;
    }
  • 相关阅读:
    BZOJ 3677 连珠线
    BZOJ 3676 回文串
    BZOJ 3675 序列分割
    BZOJ 4013 实验比较
    BZOJ 4011 落忆枫音
    使用Google BBR加速 VPS
    OSX编译安装Python3及虚拟开发环境Virtualenv
    OSX安装Mysql8.0
    OpenSSL编程之摘要
    OpenCA搭建
  • 原文地址:https://www.cnblogs.com/sssy/p/6629066.html
Copyright © 2020-2023  润新知