当前位置: 代码迷 >> 综合 >> Nswoj每日一题:括号配对问题
  详细解决方案

Nswoj每日一题:括号配对问题

热度:83   发布时间:2023-10-31 18:15:02.0

[括号配对]

首先可以初始化一个栈,然后执行程序后每次获取一个_sarray字符串中的字符如果是正括号将其压入栈,

如果是反括号就取出栈顶元素与其匹配,如果匹配成功则flag++,并将栈顶top--;如果匹配不成功,那么就将flag赋值为0.当

所有栈内元素都匹配完成(top == 0)时将结果输出即可.

#include<iostream>
#include<string.h>
using namespace std;int main() {char _sarray[10000];int n = 0;cin >> n;while (n--) {int flag = 0;char _stack[10000];int top = 0;char temp;cin >> _sarray;int lenth = strlen(_sarray);for (int i = 0; i < lenth; i++) {if (_sarray[i] == '[' || _sarray[i] == '(') {_stack[++top] = _sarray[i];continue;}if (_sarray[i] == ']') {temp = _stack[top];if (temp == '[') {flag++;top--;continue;}else {flag = 0;break;}}if (_sarray[i] == ')') {temp = _stack[top];if (temp == '(') {flag++;top--;continue;}else {flag = 0;break;}}}if (flag > 0 && top == 0) {cout << "Yes" << endl;}else {cout << "No" << endl;}}return 0;
}

  相关解决方案