题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个字符串,其中除了小写字母,还有小括号,但是小括号不一定合法,需要做适当的删除,要求最终合法的字符串。

思路分享

  • 判断括号是否合法,需要栈的作用。但是取到不合法的括号位置后的处理,还需要另起一个循环来去除对应位置的非法括号。

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution:
def minRemoveToMakeValid(self, s: str) -> str:
stk = list()
index = list()

for i, x in enumerate(s):
if x == '(':
stk.append('(')
index.append(i)
elif x == ')':
if stk and stk[-1] == '(':
stk.pop()
index.pop()
else:
stk.append(')')
index.append(i)

res = list(s)
for i in index:
res[i] = ""

return "".join(res)