修练者
题目描述 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分