题解 | #合法的括号字符串#
合法的括号字符串
https://www.nowcoder.com/practice/eceb50e041ec40bd93240b8b3b62d221
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串
# @return bool布尔型
#可用贪心算法或者二重栈来解,方法一:贪心
import math
class Solution:
def isValidString(self , s: str) -> bool:
# write code here
if len(s)==0:
return True
else:
lmax=0#待消除左括号最大数量,表示算上*之后的待消除
lmin=0#待消除左括号最小数量,不算*之后的待消除
#由定义可知因为*可以表示空格,所以lmin=0时一定为真合法
for i in s:
if i=='(':
lmax+=1
lmin+=1
elif i==')' :
if lmin>0:
lmin-=1
if lmax==0:#出现右未出现左,可直接判断为false
return False
lmax-=1
elif i=='*':
lmax+=1
if lmin>0:
lmin-=1
return lmin==0
阿里云工作强度 708人发布
