Reviewed by Aditya Kumar · Last reviewed 2026-03-24
**BFS/DFS:** Remove min parentheses to make valid. BFS: try removing 1,2,... until valid. DFS with count: track balance, prune invalid. Return all valid results (BFS finds min removal). **Two-pass:** Count extra ( and ); remove in second pass....
BFS/DFS: Remove min parentheses to make valid. BFS: try removing 1,2,... until valid. DFS with count: track balance, prune invalid. Return all valid results (BFS finds min removal).
Two-pass: Count extra ( and ); remove in second pass. BFS guarantees minimum.
def remove_invalid(s):
def valid(s): balance=0; [balance:=balance+1 if c=='(' else (balance-1 if c==')' else balance) for c in s]; return balance==0
level = {s}
while level:
valid_set = [x for x in level if valid(x)]
if valid_set: return valid_set
level = {s[:i]+s[i+1:] for s in level for i in range(len(s)) if s[i] in '()'}
Red Flag: Not handling multiple valid outcomes. Pro-Move: 'BFS ensures minimum removals—we use similar for cleaning malformed DSL expressions.'
According to DataEngPrep.tech, this is one of the most frequently asked Python/Coding interview questions, reported at 1 company. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.