括号配对问题

135 阅读1分钟

描述

  • 现在,有一行括号序列,请你检查这行括号是否配对。
    • 输入

    • 第一行输入一个数N(0

    • 输出

    • 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No

    • \

    • 解答

#include

#include

#include

using namespace std;

bool isAccept(string s){

stack sk;

char ch;

int len = s.length();

for (int i = 0; i < len; i++){

ch = s.at(i);

switch (ch)

{

case '(':

sk.push('(');

break;

case ')':

if (sk.empty()||sk.top() != '(')return false;

sk.pop();

break;

case '[':

sk.push('[');

break;

case ']':

if (sk.empty() || sk.top() != '[')return false;

sk.pop();

break;

default:

break;

}

}

if (!sk.empty())return false;

return true;

}

int main(){

string s="";

int num=0;

cin >> num;

int res[1000] = {0};

int i = 0;

while (i

{

cin >> s;

res[i]=(isAccept(s) ? 1 : 0);

i++;

}

i = 0;

while (i

{

cout << ((res[i] == 1) ? "Yes" : "No")<<endl;

i++;

}

return 0;

}