#include <iostream>
#include<stack>
using namespace std;
// 检查左右括号是否匹配
bool Ispaired(char left, char right) {
return (left == '(' && right == ')') ||
(left == '[' && right == ']') ||
(left == '{' && right == '}');
}
// 检查输入的括号字符串是否匹配
bool Isvalid(char* input,int n) {
stack<char> st; // 创建一个字符堆栈
for (int i = 0; i < n; i++) {
char ch = input[i];
// 如果是左括号,就推入堆栈
if (ch == '(' || ch == '[' || ch == '{') {
st.push(input[i]);
}
// 如果是右括号,检查堆栈的顶部是否有匹配的左括号
else if (ch == ')' || ch == ']' || ch == '}') {
if (st.empty() || !Ispaired(st.top(), ch)) return false;
st.pop(); // 弹出匹配的左括号
}
else {
return false; // 如果是其他字符,直接返回false
}
}
// 检查堆栈是否为空,为空则所有括号都匹配,否则不匹配
return st.empty();
}
int main() {
char input[128]; // 存储输入的字符串
cin>>input;
int n = strlen(input); // 获取字符串长度
if (Isvalid(input, n)) {
cout << "Match!" << endl; // 如果匹配输出"Match!"
}
else {
cout << "Not match" << endl; // 否则输出"Not match"
}
return 0;
}
C++ 括号匹配
最新推荐文章于 2024-05-16 14:05:08 发布