zoukankan      html  css  js  c++  java
  • 字符串匹配问题

    【问题描述】
           字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出: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;
    }
  • 相关阅读:
    访问修饰符
    SqlServer 查运行进程
    SqlServer 作业计时执行存储过程,杀超时进程
    VS快捷键操作
    sql server 命令
    vs 加载 dev控件
    TreeList显示[+] [-] 线条样式
    佳能MG2580S清零
    Dev WaitDialog 使用
    导出.txt / .pdf / .xls
  • 原文地址:https://www.cnblogs.com/sssy/p/6629066.html
Copyright © 2011-2022 走看看