/* 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 */
/**
* @param {string} s
* @return {boolean}
*/
//Time = O(n), Sapce = O(n)
var isValid = function (s) {
const bracketHash = {
'{': '}',
'[': ']',
'(': ')',
},
stack = [],
len = s.length
for (let i = 0; i < len; i++) {
const char = s[i]
if (bracketHash.hasOwnProperty(char)) {
stack.push(char)
} else if (bracketHash[stack.pop()] !== char) return false
}
return !stack.length //return true returns true for array of length 1
}
//Test cases
console.log(isValid('()[]{}'))
console.log(isValid('['))