当前位置:网站首页>【LeetCode】761. 特殊的二进制序列
【LeetCode】761. 特殊的二进制序列
2022-08-08 13:55:00 【pass night】
题目
特殊的二进制序列是具有以下两个性质的二进制序列:
- 0 的数量与 1 的数量相等。
- 二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量。
给定一个特殊的二进制序列 S,以字符串形式表示。定义一个操作 为首先选择 S 的两个连续且非空的特殊的子串,然后将它们交换。(两个子串为连续的当且仅当第一个子串的最后一个字符恰好为第二个子串的第一个字符的前一个字符。)
在任意次数的操作之后,交换后的字符串按照字典序排列的最大的结果是什么?
示例 1:
输入: S = "11011000"
输出: "11100100"
解释:
将子串 "10" (在S[1]出现) 和 "1100" (在S[3]出现)进行交换。
这是在进行若干次操作后按字典序排列最大的结果。
说明:
S的长度不超过50。S保证为一个满足上述定义的特殊 的二进制序列。
思路
- 因为只能对连续且非空的特殊子串操作,所以声明一个变量在遍历过程中判断当前区间内是否为连续子串
- 因为0,1数量相等,且前缀中1的数量大于0,所以特殊字串由1开头,0结尾
- 不断递归所见的特殊字串,每次都求取其子串的最大字典序值,拼接后依旧是最大字典序
- 尽管只有两个相邻字符能够交换,但根据冒泡排序的原理,依旧可以获得升序列
- 上述的升序列即位所求值
代码
class Solution:
def makeLargestSpecial(self, s: str) -> str:
if len(s) <= 2:
return s
count = left = 0
subs = list()
for i, c in enumerate(s):
if c == "1": count +=1
else:
count -= 1
if count == 0:
subs.append("1" + self.makeLargestSpecial(s[left+1:i]) + "0")
left = i+1
subs.sort(reverse=True)
return "".join(subs)
复杂度
- 时间复杂度: O ( n 2 ) O(n^2) O(n2)
- 空间复杂度: O ( n ) O(n) O(n)
边栏推荐
- 优刻得“失速”:营收转降,定向增发股东浮亏超三成
- 又一个千亿市场,冰淇淋也成了创新试验田
- 机器学习+深度学习笔记(持续更新~)
- 【个人总结】2022.8.7周结
- R语言ggplot2可视化:使用ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用tab_add_hline函数为表头添加横线并自定义线条宽度
- Implementation of FIR filter based on FPGA (1) - using fir1 function design
- OrderedDict构建函数模块的不常见写法
- 基于FPGA的FIR滤波器的实现(1)—采用fir1函数设计
- R语言ggplot2可视化:使用ggpubr包的ggline函数可视化折线图(点线图、line plot)、设置add参数为mean可视化不同水平均值的折线图
- KMP Media Group South Africa implemented a DMS (Document Management System) to digitize the process, employees can again focus on their actual tasks, providing efficiency
猜你喜欢
随机推荐
什么样的程序员在35岁依然被公司抢着要?打破程序员“中年危机”
[Redis] Bitmap and usage scenarios of bitmap (statistics of online people and user online status)
Flink1.15 组件RPC通信过程概览图
华为云弹性云服务器ECS使用【华为云至简致远】
代码随想录笔记_动态规划_322零钱兑换
更改C盘用户目录下的用户名(亲测有效)
HackTheBox | Previse
如果Controller里有私有的方法,能成功访问吗?
6.【opencv鼠标回调事件】
Thesis understanding: "Self-adaptive loss balanced Physics-informed neural networks"
张一鸣挺进生育大业
leetcode 155. Min Stack最小栈(中等)
6. [opencv mouse callback event]
用 Antlr 重构脚本解释器
译文推荐|深入解析 BookKeeper 协议模型与验证
【Rust—LeetCode题解】1408.数组中的字符串匹配
接口测试,
idea 好工具
【小码匠自习室】CSP-J/S复试高分秘诀经验分享
华为云会议初体验【华为云至简致远】







