当前位置: 首页 > news >正文

LeetCode761:特殊的二进制字符串

image

首先,需要看出来特殊的二进制字符串,性质上与合法的括号串完全相同。

  1. 左括号数目与右括号数目一致 <- 0``1数目一致
  2. 每个右括号都有左括号与其匹配 <- 前缀字符串1数目始终大于0

有了这个认识,分析合法字符的形态变得简单。因为合法的括号形态是比较熟悉的。合法的括号有两种:

  1. 拼接 :即(())+(()())这种
  2. 嵌套 : 即(()())

那么现在的问题是,对于这两种合法的情况,怎么判断其字典序最大的方式呢。对于拼接方式,只要每个拼接子块的字典序都是最大的,只需要对每个子块组成的数组进行一次排序再拼接,即可得到满足要求的最大的字典序。要想每个子块最大,就又回到了嵌套上。对于嵌套,左右两侧是不可变的,我们需要嵌套内部达到最大。这样就从(()())转移到了子问题()()怎么排序最大的问题上。这种拼接形式的处理上面已经处理过。

class Solution:def makeLargestSpecial(self, s: str) -> str:# 递归返回条件 如果长度<=2表示只是(),直接返回。不计算子问题if len(s)<=2:return sdiff=0start=0sub_strings=[]for i,ch in enumerate(s):if ch=='1':diff+=1else:diff-=1# 当合法时if diff==0:# 获取当前子块的最优排序sub_strings.append('1'+self.makeLargestSpecial(s[start+1:i])+'0')start=i+1# 对当前层级的拼接合法子串进行排序。使得当前层级字典序最大sub_strings.sort(reverse=True)# 返回最大字典序的字符串return ''.join(sub_strings)
http://www.jsqmd.com/news/397159/

相关文章:

  • 题解:洛谷 P4549 【模板】裴蜀定理
  • 从传统编程到AI协同开发的职业转型
  • 数据仓库入门指南:从零开始构建大数据存储系统
  • API网关设计:管理AI API生命周期的实战技巧!
  • r1打卡
  • AI应用架构师从0到1:AI虚拟培训系统的需求分析与原型设计
  • flex与bison学习之安装环境cygwin
  • 题解:洛谷 P1082 [NOIP 2012 提高组] 同余方程
  • 探秘提示工程架构师如何用提示工程优化环节
  • 题解:洛谷 P2303 [SDOI2012] Longge 的问题
  • 题解:洛谷 P5091 【模板】扩展欧拉定理
  • 题解:洛谷 P2568 GCD
  • 模拟退火算法
  • 题解:洛谷 P3861 拆分
  • GESP2024年3月认证C++二级( 第三部分编程题(1) 乘法问题)
  • Java synchronized关键字详解:从入门到原理
  • 题解:洛谷 P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪
  • CSP-J2025游记
  • 题解:洛谷 P4942 小凯的数字
  • P3143 [USACO16OPEN] Diamond Collector S
  • 蛇和锯子的羁绊
  • 题解:洛谷 P2704 [NOI2001] 炮兵阵地
  • 北京字画回收|上门服务,当场现金结算,丰宝斋让你变现无忧 - 品牌排行榜单
  • 题解:洛谷 P1879 [USACO06NOV] Corn Fields G
  • Lambda架构在智能家居大数据处理中的实践
  • 题解:洛谷 P2831 [NOIP 2016 提高组] 愤怒的小鸟
  • 题解:洛谷 P1450 [HAOI2008] 硬币购物
  • 提示工程架构师晋升难?因为你没搞懂这套「成长地图」
  • 大数据领域数据工程的数据迁移工具
  • 探索新高度!AI应用架构师在AI模型持续优化中的突破