读题心路历程:刚开始读题,感觉嵌套几个if就可以了吧,实际写起来,发现光嵌套if是不符合题意的。还要考虑位置,所以还是要用栈来做。
具体代码:
bool isValid(string s) {
map<char, int> list = { {'(',1},{'[',2},{'{',3},{')',4},{']',5},{'}',6} };
stack<char> st;
for (int i = 0; i < s.length(); i++)
{
if (1 <= list[s[i]] && list[s[i]] <= 3) { st.push(s[i]); }
else if (!st.empty() && list[st.top()] == list[s[i]]-3)
{
st.pop();
}
else
{
return false;
break;
}
}
if (!st.empty()){ return false; }
else{ return true; }
}