Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: "()" Output: true
Example 2:
Input: "()[]{}" Output: true
Example 3:
Input: "(]" Output: false
Example 4:
Input: "([)]" Output: false
Example 5:
Input: "{[]}" Output: true
bool isValid(string s) {
stack <int> stk;
//if (stk.empty())printf("**\n");
int strlen1 =s.length();
//printf("%d\n", strlen1);
int i = 0;
for (; i < strlen1; i++) {
if (s[i] == '('&&s[i + 1] != ')')
stk.push(s[i]);
else if (s[i] == '['&&s[i + 1] != ']')
stk.push(s[i]);
else if (s[i] == '{'&&s[i + 1] != '}')
stk.push(s[i]);
else if (s[i] == '('&&s[i + 1] == ')' || s[i] == '['&&s[i + 1] == ']' || s[i] == '{'&&s[i + 1] == '}')
i++;
else if (s[i] == ')' || s[i] == ']' || s[i] == '}'){
if (stk.empty())
{
return false;
}
else {
char temp;
temp = stk.top();
stk.pop();
if (temp=='['&&s[i]==']'|| temp == '('&&s[i] == ')' || temp == '{'&&s[i] == '}'){}
else return false;
}
}
}
return true;
}