Valid Parentheses
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 .
My Submitted Code
class Solution {
public :
bool isValid(string s) {
stack <char > sc;
char ca[6 ]={'(' ,')' ,'{' ,'}' ,'[' ,']' };
int len=s.length();
if (len%2 == 1 ){
return false ;
}
for (int i=0 ;i<len;i++){
if (sc.empty()){
if (s.at(i) == ca[1 ] ||
s.at(i) == ca[3 ]||
s.at(i) == ca[5 ]){
return false ;
}
sc.push(s.at(i));
}else {
if (sc.top() == ca[0 ]){
if (s.at(i) == ca[1 ]){
sc.pop();
}
else if (s.at(i) == ca[0 ] || s.at(i) == ca[2 ] ||s.at(i) == ca[4 ]){
sc.push(s.at(i));
}
else
return false ;
}else if (sc.top() == ca[2 ]){
if (s.at(i) == ca[3 ]){
sc.pop();
}
else if (s.at(i) == ca[0 ] || s.at(i) == ca[2 ] ||s.at(i) == ca[4 ]){
sc.push(s.at(i));
}
else
return false ;
}else if (sc.top() == ca[4 ]){
if (s.at(i) == ca[5 ]){
sc.pop();
}
else if (s.at(i) == ca[0 ] || s.at(i) == ca[2 ] ||s.at(i) == ca[4 ]){
sc.push(s.at(i));
}
else
return false ;
}
}
}
if (sc.empty()){
return true ;
}
return false ;
}
};