括号匹配
时间: 2023-10-20 18:19:59 浏览: 91
括号匹配是指判断一个字符串中的括号是否匹配。常见的括号有小括号"()",中括号"[]"和大括号"{}"。例如,字符串"(())"中的括号是匹配的,而字符串"([)]"中的括号是不匹配的。以下是一份使用 C++ 实现的括号匹配代码,供您参考:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool is_match(char ch1, char ch2) {
if (ch1 == '(' && ch2 == ')') return true;
if (ch1 == '[' && ch2 == ']') return true;
if (ch1 == '{' && ch2 == '}') return true;
return false;
}
bool is_balanced(string str) {
stack<char> S;
for (int i = 0; i < str.length(); i++) {
if (str[i] == '(' || str[i] == '[' || str[i] == '{') {
S.push(str[i]);
} else if (str[i] == ')' || str[i] == ']' || str[i] == '}') {
if (S.empty() || !is_match(S.top(), str[i])) {
return false;
}
S.pop();
}
}
return S.empty();
}
int main() {
string str;
getline(cin, str);
if (is_balanced(str)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
```
在这段代码中,我们使用了一个栈来进行括号匹配的检查。具体来说,对于输入的字符串,我们遍历每个字符,如果遇到左括号则将其入栈,如果遇到右括号则与栈顶元素进行匹配,如果匹配成功则将栈顶元素出栈,否则返回 false。最终,如果栈为空则说明匹配成功,否则说明匹配失败。
您可以将这段代码复制粘贴到您的编译器中运行,也可以自己构造一些测试数据,看看这个算法的表现。希望对您有所帮助!
阅读全文