问题标题: 酷町堂:4632 括号匹配

1
0
王曦
王曦
修练者
修练者

题目描述 Deion

给定一个只包括 (){}[]的字符串,判断字符串是否匹配。
括号匹配需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 注意空字符串可被认为是有效字符串。

例如,"([)]"没有按照顺序闭合,所以不是有效的匹配括号。
现在请你编写一个程序,来判断这些括号是否匹配。若是,输出YES,否则输出NO。

输入描述 Input Deion

一个字符串,仅包括’(’,’)’,’{’,’}’,’[’,’]’

输出描述 Output Deion

如题所述

样例输入 Sample Input

{[]}

样例输出 Sample Output

YES

数据范围及提示 Data Size & Hint

字符串长度不超过100

 

#include <iostream>

using namespace std;

string s;

 

int main() {

cin >> s;

if (s.empty()) {

cout << "NO";

return 0;

}

if (s.size() % 2 == 1) {

cout << "NO";

return 0;

}

bool f;

for (int i = 0; i < s.size(); i++) {

f = 0;

char c = s[i];

char p = s[s.size() - i - 1];

if (s[i] == ')' || s[i] == ']' || s[i] == '}') {

f = 1;

continue;

}

if (c == '(') {

if (p == ')' || s[i + 1] == ')') {

f = 1;

} else

f = 0;

} else if (c == '['){

if (p == ']' || s[i + 1] == ']') {

f = 1;

} else

f = 0;

} else {

if (p == '}' || s[i + 1] == '}') {

f = 1;

} else

f = 0;

}

if (f == 0) {

cout << "NO";

return 0;

}

}

cout << "YES";

return 0;

}

90分
 


1
0
我要回答