bool isValid(string s) {
stack<char> cstk;
for(char ch : s){
if(ch == '(' || ch == '[' || ch == '{')
cstk.push(ch);
else{
if(cstk.empty())
return false;
if(ch == ')' && cstk.top() != '(')
return false;
if(ch == '}' && cstk.top() != '{')
return false;
if(ch == ']' && cstk.top() != '[')
return false;
cstk.pop();
}
}
return cstk.empty();
}
bool checkValidString(string s) {
stack<char> left_stk;
stack<char> star_stk;
for(int i = 0; i < s.size(); i++){
if(s[i] == '(')
left_stk.push(i);
else if(s[i] == '*')
star_stk.push(i);
else{
if(left_stk.empty() && star_stk.empty())
return false;
else if(!left_stk.empty())
left_stk.pop();
else
star_stk.pop();
}
}
while(!left_stk.empty() && !star_stk.empty()){
if(left_stk.top() > star_stk.top())
return false;
left_stk.pop();
star_stk.pop();
}
return left_stk.empty();
}