当前位置:网站首页>LeetCode:每日一题【第二周】
LeetCode:每日一题【第二周】
2022-08-08 18:01:00 【星空皓月】
8.8 ~ 8.14 尽量坚持刷力扣的每日一题,锻炼大脑思维。更新中~~
761. 特殊的二进制序列【递归分治】
题目描述
思路
题目要求0和1的数量相同,我们可以看成()括号匹配,意思就是让括号有效匹配的情况下,尽量让大量的左括号在前面。并且第一个字符一定是1,最后一个字符一定是0,其实证明也好证明,如果第一个数字为0,则以第一个数字为前缀,就不满足题目中的第二个条件,如果最后一个字符是1,则前n- 1的前缀则也不满足第二个条件。我们可以剔除1和0的情况,继续进行分治讨论,知道s的长度小于等于2的情况,只有两种情况,就是10以及空字符串,直接返回即可。递归返回后,将所有特殊字符按降序返回。
AC代码
class Solution:
def makeLargestSpecial(self, ss: str) -> str:
# 内置函数
def dfs(s):
if len(s) <= 2:
return s
cnt, left = 0, 0
subs = list()
for i, ch in enumerate(s):
if ch == '1':
cnt += 1
else:
cnt -= 1
# 找到一组特殊序列
if cnt == 0:
subs.append("1" + dfs(s[left + 1:i]) + "0")
left = i + 1
subs.sort(reverse=True)
return "".join(subs)
return dfs(ss)
边栏推荐
猜你喜欢
随机推荐
what‘s the meaning of xenial
torchvision.transforms
LeaRun模型驱动开发框架 重塑企业生产力
socket concept
【云图说】第252期 初识云速建站服务
openGauss社区七月运作报告
mv-lcd初始化
【历史上的今天】8 月 8 日:中国第一个校园 BBS 成立;网景通信上市;EarthLink 创始人出生
Why do you need to cross compiler
uva1468
携手华为打造鲲鹏产业生态 | 麒麟信安亮相鲲鹏开发者创享日·长沙站
Nioke 2022 Summer Multi-School 6 B Eezie and Pie (Difference on the tree + multiplication to find the kth ancestor board)
企业“数字化转型”成功的2个必备条件!
2021年9月电子学会图形化三级编程题解析含答案:接红包游戏
新版松鼠as换源操作
啥?分库分表会带来读扩散问题?怎么解决???
Digital currency perpetual contract exchange development and development functions and code presentation
uri (url urn 的区别)
为什么MySQL的主键查询这么快
Open source summer | I have nothing to do during the epidemic, I made a button display box special effect to display my blog