热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

lc761.SpecialBinaryString

https:leetcode.comproblemsspecial-binary-stringdescription符合两个规则的01字符串称为s串:1.0和1的数量

https://leetcode.com/problems/special-binary-string/description/

 

符合两个规则的01字符串称为s串:

1.   0和1的数量相同

2.  任意前缀0不能多于1

 

其实这样子限制的是一个合法嵌套括号。

然后,要求的是,相邻的子s串可以换位置,让你输出字典序最大的交换结果。

 

发现规律:

只要给定串是s串,那么

任何1开始都能开启一段s串

s串的关系只有两种,相邻和嵌套。

现在的问题是,在做分析的时候,一个从1开始的字串是选最长的还是最短?

答案:选最短!

选最短就保证了寻找所有可能,而已若a是最短字串,那么a必须以1开始以0结尾,把这两段去除后里面要不就是空,要不就是若干s串相邻。

对于这种嵌套,递归的做可以。因为不相邻的不能交换,那么就不用考虑outside的情况了。

有个小语法,list的倒置是list[::-1]第三个参数是步长,所以取-1正好。

code:

class Solution:def makeLargestSpecial(self, S):count = i = 0res = []for j, v in enumerate(S):count = count + 1 if v == '1' else count - 1if count == 0:res.append('1' + self.makeLargestSpecial(S[i + 1:j]) + '0')i = j + 1return ''.join(sorted(res)[::-1])

View Code

 

转:https://www.cnblogs.com/waldenlake/p/9628317.html



推荐阅读
author-avatar
黄秋华1219
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有