牛妹有括号序列brackets,因为过了太久,导致里面有些括号看不清了,所以用??代替,她想知道这个括号序列能不能恢复成合法的括号序列。具体操作是将??改为’(‘或者’)’。brackets只由’?’,’(’,’)'构成。
合法的括号序列的定义:
1.空字符为合法括号序列
2.(+合法括号序列+) 为合法括号序列
3.()+合法括号序列为合法括号序列
示例1
输入 "()?)"
输出 "()()"
说明 把?替换为(即可
示例代码:
class Solution(object):
def isValid(self, s):
if len(s) % 2 == 1:
return False
left, right = 0, 0
for i in range(len(s)):
if s[i] == '(':
left += 1
if s[i] == ')':
right += 1
if left > len(s) / 2 or right > len(s) / 2:
return False
left_bracket = 0
tmp = []
for i in range(len(s)):
tmp.append(s[i])
if s[i] == '?':
if left < len(s) / 2:
tmp[i] = '('
left += 1
else:
tmp[i] = ')'
if tmp[i] == '(':
left_bracket += 1
if tmp[i] == ')':
left_bracket -= 1
if left_bracket < 0:
return False
return tmp
s = '((()))?)'
obj = Solution()
ans = obj.isValid(s)
print(''.join(ans))
运行效果: