Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.
这种题目适合用栈来解决。
class Solution {
public:
bool isValid(string s) {
stack<char> mystack;
for(int i = 0; i < s.size(); ++i){
if(s[i]=='('||s[i]=='['||s[i]=='{')
mystack.push(s[i]);
else{
if(mystack.size()==0) return false;
char tmp = mystack.top();
if((tmp=='('&&s[i]==')')||(tmp=='['&&s[i]==']')||(tmp=='{'&&s[i]=='}'))
mystack.pop();
else return false;
}
}
if(mystack.size()>0)
return false;
return true;
}
};