Дана строка из круглых скобок и строчных латинских букв. Удалите минимальное число
скобок, чтобы скобочная последовательность стала правильной. Верните все различные
строки, которые можно так получить. Буквы удалять нельзя, и они на правильность не влияют.
// RemoveInvalidParentheses возвращает все различные правильные строки,
// получаемые из s удалением минимального числа скобок.
func RemoveInvalidParentheses(s string) []string
Порядок строк в ответе любой. Если правильную строку можно получить только удалением
всех скобок, ответ состоит из одной строки — оставшихся букв (возможно, пустой).
Примеры
"()())()" → ["(())()", "()()()"]
"(a)())()" → ["(a())()", "(a)()()"]
")(" → [""]
"x(" → ["x"]
"(())" → ["(())"]
"" → [""]
Ограничения: 0 ≤ len(s) ≤ 25, скобок не больше 20.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.