给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。 输入格式: 输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。 输出格式: 如果括号配对,输出yes,否则输出no。 输入样例1: sin(10+20) 输出样例1: yes 输入样例2: {[}] 输出样例2: no
时间: 2024-03-25 16:42:01 浏览: 42
用C语言检查输入括号是否匹配
5星 · 资源好评率100%
这道题可以使用栈来实现。遍历字符串中的每个字符,如果是左括号,则将其入栈;如果是右括号,则将其与栈顶元素进行匹配,如果匹配成功,则将栈顶元素弹出,否则说明括号不配对,输出no。
最后,如果栈为空,则说明括号配对,输出yes,否则输出no。
代码示例:(使用C++实现)
```cpp
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
stack<char> stk;
bool flag = true;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
stk.push(s[i]);
} else if (s[i] == ')') {
if (stk.empty() || stk.top() != '(') {
flag = false;
break;
}
stk.pop();
} else if (s[i] == ']') {
if (stk.empty() || stk.top() != '[') {
flag = false;
break;
}
stk.pop();
} else if (s[i] == '}') {
if (stk.empty() || stk.top() != '{') {
flag = false;
break;
}
stk.pop();
}
}
if (flag && stk.empty()) {
cout << "yes" << endl;
} else {
cout << "no" << endl;
}
return 0;
}
```
阅读全文