力扣有效的括号c++
时间: 2024-10-02 14:01:12 浏览: 36
力扣(LeetCode)上关于“有效括号”的问题通常是考察如何判断一个给定的字符串是否只包含有效的括号对。例如,`"()"`, `")("`, `{[]}` 等是有效的,而 `")"` 或者 `"({)"` 就不是。这个问题通常涉及到栈数据结构的应用,因为括号有嵌套规则。
在C++中,你可以通过遍历输入的字符串,对于每个字符,如果是左括号(如'('、'{'或'['),就将其压入栈;如果遇到右括号,检查栈顶元素是否与其匹配。如果不匹配或者栈为空,说明不是有效括号序列。如果遍历结束后栈为空,则整个序列有效。
下面是一个简单的C++代码示例:
```cpp
#include <stack>
#include <string>
bool isValid(const std::string& s) {
std::stack<char> st;
for (char c : s) {
if (c == '(' || c == '{' || c == '[') {
st.push(c);
} else if (!st.empty() && (c == ')' && st.top() == '(' ||
c == '}' && st.top() == '{' ||
c == ']' && st.top() == '[')) {
st.pop();
} else {
return false;
}
}
return st.empty(); // 如果栈空,说明所有括号都已配对
}
```
阅读全文