Generate Parentheses

Given n, output all valid combinations of n pairs of parentheses.

Brute Force

Utilizing a deque to generate all possible combinations. The time and space complexity is whopping .

def validate(string):
    counter = 0
    for p in string:
        if p == "(":
            counter += 1
        else:
            counter -= 1
        if counter < 0:
            return False
    return counter == 0
 
res = []
queue = deque([""])
while queue:
    cur_string = queue.popleft()
 
    if len(cur_string) == 2 * n and validate(cur_string):
        res.append(cur_string)
        continue
    queue.append(cur_string + ")")
    queue.append(cur_string + "(")
 
return res