用C++写出括号匹配问题的代码,借用栈
时间: 2024-10-29 12:13:25 浏览: 9
C++中用栈来判断括号字符串匹配问题的实现方法
要编写一个C++程序来解决括号匹配问题(如"()"、"[]"、"{}"),可以使用栈的数据结构。当遇到左括号时,我们将其压入栈中;当遇到右括号时,我们检查栈顶的左括号是否与其匹配。如果匹配,就弹出栈顶元素;如果不匹配,说明括号不配对,返回false。
以下是使用栈实现括号匹配的一个简单示例[^1]:
```cpp
#include <iostream>
#include <stack>
using namespace std;
bool isValid(string s) {
stack<char> st;
const string pairs = "()[]{}";
for(char c : s) {
if(pairs.find(c) != string::npos) {
if(st.empty()) {
st.push(c);
} else if(pairs[st.top()] != c) {
return false; // 不匹配
} else {
st.pop();
}
}
}
// 如果还有剩余的左括号,说明不匹配
return st.empty();
}
int main() {
cout << "Is ('()[]{}') valid? " << (isValid("()[]{}") ? "Yes" : "No") << endl;
cout << "Is ('({[]})') valid? " << (isValid("({[]})") ? "Yes" : "No") << endl;
cout << "Is ('{[()]}' valid? " << (isValid("{[()]}") ? "Yes" : "No") << endl;
return 0;
}
```
这个程序定义了一个`isValid`函数,它接受一个字符串`s`作为输入,遍历每个字符并检查括号是否匹配。如果所有括号都匹配,函数返回true,否则返回false。
阅读全文