一个栈解决:
class Solution {
public:
bool isValid(string s) {
stack<char> sk;
int N = s.length();
for(int i=0;i<N;i++){
if(s[i] == '(' || s[i] == '[' || s[i] == '{'){
sk.push(s[i]);
}else{
if(sk.empty()) return false;
if( (sk.top() == '(' && s[i] == ')') ||
( sk.top() == '[' && s[i] == ']') ||
( sk.top() == '{' && s[i] == '}') ){
sk.pop();
}else{
return false;
}
}
}
if(sk.empty()) return true;
return false;
}
};