此题甚易。用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;
}