c++stack查看括号是否匹配
时间: 2023-09-27 16:06:45 浏览: 84
可以使用栈来判断括号是否匹配。具体实现如下:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool isMatched(string s) {
stack<char> st;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
st.push(s[i]);
} else {
if (st.empty()) {
return false; // 栈为空,说明没有左括号与其匹配
}
char top = st.top();
st.pop();
if ((s[i] == ')' && top != '(') || (s[i] == ']' && top != '[') || (s[i] == '}' && top != '{')) {
return false; // 左右括号不匹配
}
}
}
return st.empty(); // 栈中还有元素,说明左括号没有与其匹配
}
int main() {
string s = "((()))";
if (isMatched(s)) {
cout << "括号匹配" << endl;
} else {
cout << "括号不匹配" << endl;
}
return 0;
}
```
在上述代码中,我们使用了一个栈来存储左括号。当遇到左括号时,将其入栈;当遇到右括号时,将栈顶元素出栈并与当前右括号进行匹配。如果匹配成功,则继续处理;否则说明括号不匹配。
最后,如果栈为空,说明所有左括号都已经与其右括号匹配成功,返回 true;否则说明还有左括号没有与其右括号匹配成功,返回 false。
阅读全文