2116. Check if a Parentheses String Can Be Valid

class Solution:
    def canBeValid(self, s: str, locked: str) -> bool:
        l = len(s)
        if l % 2 != 0: return False

        openBrackets = []
        unlocked = []

        for i, e in enumerate(s):
            if locked[i] == '0':
                unlocked.append(i)
            elif e == '(':
                openBrackets.append(i)
            elif e == ')':
                if openBrackets:
                    openBrackets.pop()
                else:
                    if unlocked:
                        unlocked.pop()
                    else:
                        return False

        while openBrackets and unlocked and openBrackets[-1] < unlocked[-1]:
            openBrackets.pop()
            unlocked.pop()

        return not openBrackets