CodingTrip - 携程编程大赛 (预赛第一场) 括号匹配

来源:互联网 发布:淘宝个性家具店铺名字 编辑:程序博客网 时间:2024/06/05 18:20

#include <iostream>#include <vector>using namespace std;int main(void){  int nLineNum = 0;  cin>>nLineNum;  if(nLineNum<0 || nLineNum>100)  {    cout<<"Please input number 0<n<=100."<<endl;    return 1;  }    vector<string> vInputList;  for(int i=0; i<nLineNum; ++i)  {    string sInputStr="";    cin>>sInputStr;        if(sInputStr.size() == 0)    {      cout<<"Error:Input string is empty."<<endl;      --i;      continue;    }        if(sInputStr.size() >=10000)    {      cout<<"Error:Input string is too long."<<endl;      --i;      continue;    }        vInputList.push_back(sInputStr);  }    vector<string>::iterator vIter = vInputList.begin();  for(; vIter != vInputList.end(); ++vIter)  {    string sUnMatch="";    string sInput=*vIter;    string::iterator sIter = sInput.begin();    for(; sIter != sInput.end(); ++sIter)    {      char cCurChar = *sIter;      if(sUnMatch.empty())      {        sUnMatch.push_back(cCurChar);      }      else      {        string::iterator sEndIter = sUnMatch.end() - 1;        char cEndChar=*sEndIter;        if((cEndChar=='[' && cCurChar==']')          ||(cEndChar=='(' && cCurChar==')'))        {          sUnMatch.erase(sEndIter);        }        else        {          sUnMatch.push_back(cCurChar);        }      }    }        if(sUnMatch.empty())    {      cout<<"Yes"<<endl;    }    else    {      cout<<"No"<<endl;    }  }  return 1;}

括号匹配Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0Problem Description描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。 如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的 Input第一行输入一个正整数N,表示测试数据组数(N<=100)。每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100。 Output对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行。 Sample Input4[]([])[]((]([)] Sample Output0032                                             
0 0
原创粉丝点击