class Solution {
public:
bool isValid(string s) {
int len = s.size();
stack<char> st;
for (int i = 0; i < len; i++) {
char pin = s[i];
if (st.size() != 0) {
if (st.top() == '(' && pin == ')')
st.pop();
else if (st.top() == '[' && pin == ']')
st.pop();
else if (st.top() == '{' && pin == '}')
st.pop();
else st.push(pin);
}
else st.push(pin);
}
return st.empty();
}
};这道题的Tag直接给了我答案,代码运行的过程就像一个消消乐游戏一样,一旦匹配成功就那个匹配的括号就消失
本文介绍了一种使用栈实现括号匹配的有效算法。通过遍历输入字符串中的每个字符,并利用栈来跟踪未闭合的括号,该算法能高效判断括号是否正确配对。当遇到闭合括号时,如果它与栈顶的开启括号相匹配,则这两个括号从栈中移除;否则,将闭合括号压入栈中。最终,若栈为空则说明所有括号都已正确配对。
1551

被折叠的 条评论
为什么被折叠?



