/*
1. 第一个字符入栈
2. 第二个字符看看和栈的top是否匹配,如果匹配,出栈。如果不匹配,入栈。
3. 循环1,2
4. 栈空,整体匹配,否则,整体不匹配。
*/
class Solution {
public:
bool isValid(string s) {
if(s.size() == 0) return true;
if(s.size()%2 != 0) return false;
stack<char> st;
map<char,char> mp={{']','['},{'}','{'},{')','('}};
st.push(s[0]);
for(int i = 1; i<s.size(); i++)
{
if(st.empty()) st.push(s[i]); // (){} 如果没有这条,读到{时,栈为空,st.top()会出错。
else{
if(mp[s[i]] != st.top()) st.push(s[i]);
else st.pop();
}
}
return st.empty() ? true:false;
}
};