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
Solution in C++
class Solution {
public:
int iAction(char ch) {
switch(ch) {
case '(': return 1;
case '{': return 2;
case '[': return 3;
case ')': return -1;
case '}': return -2;
case ']': return -3;
}
return 0; // no action needed
}
bool isValid(string s) {
stack<char> myStack;
for(int i=0; i<s.length(); i++) {
int a=iAction(s[i]);
if (a>0) myStack.push(s[i]);
else {
if (myStack.empty()) return false;
int previousCase=iAction(myStack.top());
if ((int)fabs(a)!=previousCase) return false;
myStack.pop();
}
}
return (myStack.empty());
}
}; |