Правильная скобочная последовательность

Назовем скобочной последовательностью строку, состоящую из символов ()[]<>{}. Гарантируется, что в этой задаче в функцию передаются только такие строки.

Правильная скобочная последовательность (ПСП) формально определяется так:

  1. Пустая строка является ПСП.
  2. Если строка s является ПСП, то строки (s), <s>, {s}, [s] тоже являются ПСП. Например, <()[]>{} — ПСП, значит [<()[]>{}] — тоже ПСП
  3. Если строка s является ПСП и строка t тоже является ПСП, то строка st — ПСП. Например, ()[] и {{}[]} — ПСП. Тогда ()[]{{}[]} — тоже ПСП.

На более простом языке, ПСП — это строка, в которой на каждую открывающуюся скобочку есть соответствующая закрывающая скобочка.

Реализуйте функцию isValidBrackets, которая принимает строку и определяет, является она ПСП.

Примеры

console.log(isValidBrackets("()(()())")); // true console.log(isValidBrackets("(([]{}[<>[{}]]))")); // true // Не все скобки закрылись console.log(isValidBrackets("((())")); // false // Есть лишние закрывающие скобки console.log(isValidBrackets("()))")); // false // Скобки не совпадают по типам console.log(isValidBrackets("[(])")); // false