题解 | #合法的括号字符串#
合法的括号字符串
https://www.nowcoder.com/practice/eceb50e041ec40bd93240b8b3b62d221
')'后边的*不能匹配当前‘)’,'('前面的*不能匹配当前‘(’,因为是从前往后遍历,故已经存入的所有*都可以匹配')',最后如果有多出的'(',判断是否总有下标大于他的剩余*与他匹配即可
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可#
#
# @param s string字符串
# @return bool布尔型
#
class Solution:
def isValidString(self , s: str) -> bool:
# write code here
stack = []
lis = []
for i in range(len(s)):
if s[i] == '(':
stack.append(i)
if s[i] == '*':
lis.append(i)
if s[i] == ')':
if len(stack) != 0:
stack.pop()
else:
if len(lis) != 0:
lis.pop(0)
else:
return False
if len(stack) == 0:
return True
if len(stack) > len(lis):
return False
for i in reversed(stack):
for j in lis:
if i < j:
lis.remove(j)
break
else:
return False
return True