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