当前位置:网站首页>【LeetCode】761. Special binary sequence
【LeetCode】761. Special binary sequence
2022-08-08 14:02:00 【pass night】
题目
特殊的二进制序列是具有以下两个性质的二进制序列:
- 0 的数量与 1 的数量相等.
- 二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量.
给定一个特殊的二进制序列 S
,以字符串形式表示.定义一个操作 为首先选择 S
的两个连续且非空的特殊的子串,然后将它们交换.(两个子串为连续的当且仅当第一个子串的最后一个字符恰好为第二个子串的第一个字符的前一个字符.)
在任意次数的操作之后,交换后的字符串按照字典序排列的最大的结果是什么?
示例 1:
输入: S = "11011000"
输出: "11100100"
解释:
将子串 "10" (在S[1]出现) 和 "1100" (在S[3]出现)进行交换.
这是在进行若干次操作后按字典序排列最大的结果.
说明:
S
的长度不超过50
.S
保证为一个满足上述定义的特殊 的二进制序列.
思路
- Because it can only operate on special substrings that are continuous and non-empty,So declare a variable to judge whether the current interval is a continuous substring during the traversal process
- 因为0,1数量相等,and prefix1的数量大于0,So special strings are given by 1开头,0结尾
- Continually recurse the special strings seen,Finds the largest lexicographic value of its substring each time,After splicing, it is still the largest lexicographical order
- Although only two adjacent characters can be swapped,But according to the principle of bubble sort,Ascending sequences are still available
- The ascending sequence described above is evaluated in bits
代码
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)
边栏推荐
- Tsinghua | GLM-130B: An Open Bilingual Pre-training Model
- Implement a customized pin code input control
- 更改C盘用户目录下的用户名(亲测有效)
- 看三年的CRUD程序员如何解决数据库死锁的
- 哈佛大学砸场子:DALL-E 2只是「粘合怪」,生成正确率只有22%
- 【黑马早报】巴菲特罕见巨亏近3000亿;周鸿祎回应360不能卸载;三亚倡议酒店不变相提高房价;首个国产抗新冠口服药定价不超300元...
- 项目动态|Apache Pulsar 2.10.1 版本介绍
- 【小码匠自习室】 [NOI Online 2022 入门组] 王国比赛
- leetcode 155. Min Stack最小栈(中等)
- 彻底了解什么是POE交换机!!!
猜你喜欢
“自降估值”3个亿的咖啡独角兽要IPO了
Pretraining Weekly Issue 56: Long Text Understanding, Instant Question Answering, Mask Self-Supervision
Code Casual Recording Notes_Dynamic Programming_322 Change Exchange
【系统设计】S3 对象存储
TCP补充
【黑马早报】巴菲特罕见巨亏近3000亿;周鸿祎回应360不能卸载;三亚倡议酒店不变相提高房价;首个国产抗新冠口服药定价不超300元...
年初离职,学习半年源码,终于拿到了蚂蚁Offer,分享面试过程
剑指 Offer 66. 构建乘积数组
从零开始,如何拥有自己的博客网站【华为云至简致远】
HackTheBox | Horizontall
随机推荐
【Rust—LeetCode题解】1.两数之和
Harvard University smashes the field: DALL-E 2 is just a "glue monster", and the generation accuracy rate is only 22%
[Redis] Bitmap and usage scenarios of bitmap (statistics of online people and user online status)
idea增加左右箭头
项目动态|Apache Pulsar 2.10.1 版本介绍
哈佛大学砸场子:DALL-E 2只是「粘合怪」,生成正确率只有22%
用 Antlr 重构脚本解释器
2022年8月7日 暑假第四周总结
使用单点登录 (SSO):便捷访问,降低风险,精简流程
腾讯,投了个 “离诺贝尔奖最近的华人”
医学图像数据增强-归一化
MapStruct入门使用
HackTheBox | Horizontall
基于FPGA的FIR滤波器的实现(1)—采用fir1函数设计
String转成double等类型注意非空判断
R语言ggplot2可视化:使用ggpubr包的ggtexttable函数可视化表格数据(直接绘制表格图或者在图像中添加表格数据)、使用tab_add_hline函数为表头添加横线并自定义线条宽度
华为云会议的优势【华为云至简致远】
2022-08-07 第五小组 顾祥全 学习笔记 day31-集合-Map集合
非科班毕业生,五面阿里:四轮技术面+HR一面已拿offer
《预训练周刊》第56期:长文本理解、即时问答、掩码自监督