C++随笔--A题:括号配对问题

    xiaoxiao2023-03-25  8

    描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符 输出 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No 样例输入 3 [(]) (]) ([[]()]) 样例输出 No No

    Yes

    c++代码如下:                                                                        //如果提交,需要将后面的system("pause");去掉

    #include<iostream> #include<string> #include<string.h> using namespace std; bool IsMatch(char *str){ char stack[10001]; int top = -1,i; int num = strlen(str); for (i = 0; i < num; i++){ switch (str[i]){ case '(':stack[++top] = str[i]; break; case '[':stack[++top] = str[i]; break; case ')':if (top < 0 || stack[top--] != '(') return false; break; case ']':if (top < 0 || stack[top--] != '[') return false; break; } } return top == -1; } int main(){ char str[101][10001]; int i, n; cin >> n; cin.get(); for (i = 0; i < n; i++) { cin.get(str[i], 10001);                                    //可将这两行代码换为cin.getline(str[i],10001),即将cin.get()删去 cin.get(); } for (i = 0; i < n; i++){ if (IsMatch(str[i])) cout << "Yes" << endl; else cout << "No" << endl; } system("pause"); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1203755.html
    最新回复(0)