LeetCode--678. 有效的括号字符串
最后更新于
最后更新于
给你一个只包含三种字符的字符串,支持的字符类型分别是
'('
、')'
和'*'
。请你检验这个字符串是否为有效字符串,如果是 有效 字符串返回true
。有效 字符串符合如下规则:
任何左括号
'('
必须有相应的右括号')'
。任何右括号
')'
必须有相应的左括号'('
。左括号
'('
必须在对应的右括号之前')'
。
'*'
可以被视为单个右括号')'
,或单个左括号'('
,或一个空字符串""
。
假设两种情况,'*'
全部为''
或者')'
或者全部为'('
,以此来覆盖所有情况。
Rcnt表示所有的'*'
均为'('
这也意味着,一旦Rcnt小于零,一定应该返回false
除此之外的,我们都交给Lcnt判断,由于此时我们已经通过Rcnt保证了,此时的'('
一定大于等于')'
,所以我们可以放心的去判断Lcnt,如果此时Lcnt要小于0时,我们不能让他变成0,因为此时我们得到了Rcnt的保障,所以这里可以从前面的'*'
拿到补充作为'('
,使得'*'
,Lcnr无法为0,并且此时Rcnt也需要--,这样到最后,如果Lcnt == 0,就说明匹配成功。