此题甚易。用stack即可。
需要注意的地方有:
1) 用st.top()时需要检查st.empty()是否为空,否则出错。
2) 当c=')'或']'或'}'时,若st.top()不为match的括号,(也就是说,这是错误的情形),也要将c push进栈。否则这种错误情形检查不出来。
bool isValid(string s) {
stack<char> st;
if (s.size()==0) return true;
for (int i=0; i<s.size(); i++) {
char c=s.at(i);
switch (c) {
case '(':
st.push(c);
break;
case ')':
if (!st.empty() && (st.top()=='('))
st.pop();
else
st.push(c);
break;
case '{':
st.push(c);
break;
case '}':
if (!st.empty() && (st.top()=='{'))
st.pop();
else
st.push(c);
break;
case '[':
st.push(c);
break;
case ']':
if (!st.empty() && (st.top()=='['))
st.pop();
else
st.push(c);
break;
}
}
if (!st.empty())
return false;
else
return true;
}
本文介绍了一种使用栈实现括号匹配的有效算法。通过遍历输入字符串并利用栈来跟踪括号,该算法能准确判断括号是否正确配对及闭合。详细展示了算法的具体实现过程,包括关键步骤及注意事项。
395

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



