Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Remove Brackets by pokosasa
from collections import Counter
def remove_brackets(line: str) -> str:
brackets = {"(": ")", "{": "}", "[": "]", ")": "(", "}": "{", "]": "["}
counter = Counter(line)
counter_left = Counter()
res = []
stack = []
for i, c in enumerate(line):
if c in ")}]":
if not stack or brackets[stack[-1][-1]] != c:
continue
else:
counter_left[stack[-1][-1]] -= 1
res.append(stack.pop())
res.append((i, c))
elif counter_left[c] < counter[brackets[c]]:
stack.append((i, c))
counter_left[c] += 1
res = "".join(c for _, c in sorted(res))
print(res)
return res
if __name__ == '__main__':
print("Example:")
print(remove_brackets('(()()'))
# These "asserts" are used for self-checking and not for an auto-testing
assert remove_brackets('(()()') == '()()'
assert remove_brackets('[][[[') == '[]'
assert remove_brackets('[[(}]]') == '[[]]'
assert remove_brackets('[[{}()]]') == '[[{}()]]'
assert remove_brackets('[[[[[[') == ''
assert remove_brackets('[[[[}') == ''
assert remove_brackets('') == ''
assert remove_brackets('[(])') == '()'
print("Coding complete? Click 'Check' to earn cool rewards!")
April 4, 2021