当前位置:网站首页>【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)
边栏推荐
- Kotlin系列之let、with、run、apply、also函数的使用
- 项目动态|Apache Pulsar 2.10.1 版本介绍
- R语言ggplot2可视化:使用ggpubr包的ggline函数可视化折线图(点线图、line plot)、设置add参数为mean可视化不同水平均值的折线图
- 现在网上开户安全么?接着证券开户选择哪个证券?
- 医学图像数据增强-重采样itk
- sample function—R language
- Flink1.15 组件RPC通信过程概览图
- 华为云弹性云服务器ECS使用【华为云至简致远】
- KD-SCFNet:通过知识蒸馏实现更准确、更高效的显着目标检测(ECCV2022)
- R语言ggplot2可视化:基于aes函数中的fill参数和shape参数自定义绘制分组折线图并添加数据点(散点)、设置可视化图像的主题为theme_gray
猜你喜欢
Tsinghua | GLM-130B: An Open Bilingual Pre-training Model
客户案例 | 提高银行信用卡客户贡献率
暗恋云匹配匿名交友聊天系统开发
QtWebassembly遇到的一些报错问题及解决方案
全网最全的PADS 9.5安装教程与资源包
【系统设计】S3 对象存储
年初离职,学习半年源码,终于拿到了蚂蚁Offer,分享面试过程
哈佛大学砸场子:DALL-E 2只是「粘合怪」,生成正确率只有22%
华为云弹性云服务器ECS使用【华为云至简致远】
【黑马早报】巴菲特罕见巨亏近3000亿;周鸿祎回应360不能卸载;三亚倡议酒店不变相提高房价;首个国产抗新冠口服药定价不超300元...
随机推荐
设计一个跨平台的即时通讯系统(采用华为云ECS服务器作为服务端 )【华为云至简致远】
MySQL:锁机制 |表级锁、行级锁 | 排它锁、共享锁 | 间隙锁
如何对用户输入进行校验
sample函数—R语言
R语言数据类型转换:基本数据类型的转换、将一种数据类型转化为另外一种数据类型
itk中图像2d-3d配准整理
初窥门径代码起手,Go lang1.18入门精炼教程,由白丁入鸿儒,首次运行golang程序EP01
poj3744 Scout YYF I
暗恋云匹配匿名交友聊天系统开发
String转成double等类型注意非空判断
从零开始,如何拥有自己的博客网站【华为云至简致远】
【小码匠自习室】让错误成为孩子进步的阶梯
南非 KMP 媒体集团实施了 DMS(文档管理系统)使流程数字化,员工可以再次专注于他们的实际任务,提供了效率
年初离职,学习半年源码,终于拿到了蚂蚁Offer,分享面试过程
代码随想录笔记_动态规划_322零钱兑换
idea 好工具
【Rust—LeetCode题解】1.两数之和
TS+Hooks二次封装antd Modal,实现可拖拽
【小码匠自习室】朋友的朋友不是朋友
Thesis understanding: "Self-adaptive loss balanced Physics-informed neural networks"