本文主要是介绍Leetcode 2116. Check if a Parentheses String Can Be Valid [Python],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目容易把人带偏了。其实上,我们只用关注,在锁定位置i上,如果出现了‘(’,那么从这个‘(’的位置到末尾的总的‘(’且都是锁定的‘('的数量不可以超过i到末尾的长度的一半,应为那样的话没有足够的‘)‘可以换过了组成对。同理,在锁定位置i上,如果出现了‘)’,那么从0到i位置上的‘)’且锁定的总数不可以超过i+1的一半,原因同上。同时,string的长度不能是奇数。
class Solution:def canBeValid(self, s: str, locked: str) -> bool: left = 0right = 0if len(s) % 2==1:return Falsefor i in range(len(s)):if locked[i] == '1' and s[i] == ')':left += 1if left > (i+1)//2:return Falsej = len(s) - 1 - iif locked[j] == '1' and s[j] == '(':right += 1if right > (len(s)-j) // 2:return Falsereturn True
这篇关于Leetcode 2116. Check if a Parentheses String Can Be Valid [Python]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!