

cpp
stack<数据类型> 变量名;
-
stack:模板类名,表示栈数据结构 -
<char>:模板参数,指定栈中存储的元素类型为char -
st:栈对象的变量名(可自定义)
cpp
stack<char> st;
cpp
class Solution {
public:
bool isValid(string s) {
// 检查字符串长度:如果为奇数,括号不可能完全匹配
if (s.size() % 2 != 0) return false;
// 使用栈来存储期望的右括号(用于匹配后续字符)
stack<char> st;
// 遍历字符串中的每个字符
for (int i = 0; i < s.size(); i++) {
// 情况1:遇到左括号 '(',将对应的右括号 ')' 压入栈中
if (s[i] == '(') st.push(')');
// 情况2:遇到左括号 '{',将对应的右括号 '}' 压入栈中
else if (s[i] == '{') st.push('}');
// 情况3:遇到左括号 '[',将对应的右括号 ']' 压入栈中
else if (s[i] == '[') st.push(']');
// 情况4:遇到右括号时的检查
// 条件1:栈为空 -> 右括号没有对应的左括号
// 条件2:栈顶元素与当前字符不匹配 -> 括号类型不一致
else if (st.empty() || st.top() != s[i]) return false;
// 情况5:栈顶元素与当前右括号匹配,弹出栈顶元素(完成一对匹配)
else st.pop();
}
// 最终检查:如果栈为空,说明所有括号都正确匹配
// 如果栈不为空,说明还有未匹配的左括号
return st.empty();
}
};
empty() 函数返回一个 布尔值(bool):
-
true:容器为空(没有元素) -
false:容器不为空(至少有一个元素)