LeetCode 1702. 修改后的最大二进制字符串(贪心)
文章目录
- 1. 题目
- 2. 解题
1. 题目
给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改:
- 操作 1 :如果二进制串包含子字符串
"00"
,你可以用"10"
将其替换。
比方说,"00010" -> "10010"
- 操作 2 :如果二进制串包含子字符串
"10"
,你可以用"01"
将其替换。
比方说,"00010" -> "00001"
请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。
如果二进制字符串 x 对应的十进制数字大于二进制字符串 y 对应的十进制数字,那么我们称二进制字符串 x 大于二进制字符串 y 。
示例 1:
输入:binary = "000110"
输出:"111011"
解释:一个可行的转换为:
"000110" -> "000101"
"000101" -> "100101"
"100101" -> "110101"
"110101" -> "110011"
"110011" -> "111011"示例 2:
输入:binary = "01"
输出:"01"
解释:"01" 没办法进行任何转换。提示:
1 <= binary.length <= 10^5
binary 仅包含 '0' 和 '1' 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-binary-string-after-change
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 左端连续的1不动
- 后面的1都移动到右边
- 中间的 n 个0 变成,n-1 个 1 和 1 个 0
class Solution {public:string maximumBinaryString(string binary) {int one1 = 0, oneall = 0, n = binary.length();bool meetzero = false;//遇到第一次0for(int i = 0; i < n; i++){ if(binary[i] == '1'){oneall++;if(!meetzero)one1++;//左端连续的1}elsemeetzero = true;}return string(one1,'1') // 左端的1不动+(n-oneall > 0 ? (string(n-oneall-1,'1')+'0') : "") // 中间的0000变成1110,留一个0+string(oneall-one1,'1');//剩余的1全部移到右边}
};
192 ms 57.2 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 1702. 修改后的最大二进制字符串(贪心)相关推荐
- Leetcode1702. 修改后的最大二进制字符串[C++题解]:思维题
文章目录 题目分析 题目链接 题目分析 只有2种操作:00变成10,10变成01,为了使得结果最大,需要前面尽可能变成1.怎么才能使得某一个的0变成1呢? 经过观察,只要这个0后面的某一位还有0,该位 ...
- LeetCode 1980. 找出不同的二进制字符串
文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串数组 nums ,该数组由 n 个 互不相同 的二进制字符串组成,且每个字符串长度都是 n . 请你找出并返回一个长度为 n 且 没有出现 ...
- LeetCode 1784. 检查二进制字符串字段
文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制字符串 s ,该字符串 不含前导零 . 如果 s 最多包含 一个由连续的 '1' 组成的字段 ,返回 true .否则,返回 fals ...
- 已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。
只为记录汇编作业 题目:已知字符串STRING以'$'为结束标志:统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变.要求分别在屏幕上输出原字符串以 ...
- C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数
C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在C ...
- LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)
LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...
- LeetCode每日一题——1758. 生成交替二进制字符串的最少操作数
LeetCode每日一题系列 题目:1758. 生成交替二进制字符串的最少操作数 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个仅由字符 '0' 和 '1' ...
- mysql存图片二进制文件_将图片(二进制文件)存储于数据库,论文件字节流与二进制字符串相互转换...
开发中遇到存储图片文件于数据库这样的需求. 我们知道文件本身就是一份二进制数据,不同类型的文件只是编码形式不同,对应的解读形式不同,无论txt文件.jpg文件亦或是mp4文件,本质上都是0和1组成的. ...
- 算法---找出第 N 个二进制字符串中的第 K 位(Kotlin)
题目 给你两个正整数 n 和 k,二进制字符串 Sn 的形成规则如下: S1 = "0" 当 i > 1 时,Si = Si-1 + "1" + reve ...
最新文章
- 关于 Hive 报 SemanticException 错误的问题
- python智能办公系统_用 Python 自动化办公能做到哪些有趣或有用的事情?
- 手写自定义注解实现思路
- Go命令行库Cobra的使用
- linux下识别内存,c – Linux:识别内存中的页面
- java九年_Java 9明年9月釋出正式版
- Flutter布局锦囊---简单的应用栏
- Promise API 简介
- c#语言开发教程pdf版,用C#语言制作PDF文件全攻略图文教程
- Ubuntu 下网易云音乐出现“加载失败,网络错误,可以在设置中发送反馈”问题及解决
- matlab临界转速教学,转子动力学求解转子临界转速与固有频率详解.ppt
- 锁定关闭计算机快捷键,锁定电脑快捷键怎么更改?
- hugepage oracle 12c,Huge page使用的一些问题
- markdown文件怎么转换成html,将markdown文件转换为html文件(MarkdownPad)
- Java版数据结构之数组模拟环形队列demo
- Mac 电脑添加代理服务器
- 深入理解WKWebView白屏
- 从零开始学习信号完整性--7-SI分析仿真
- 关于GPU一些笔记(SIMT方面)
- 数据库数据的备份和还原
热门文章
- linux找link原路径,readlink命令找出符号链接所指向的位置
- 解决:building 'twisted.test.raiser' extension安装scrapy报错
- 互联网金融行业申请评分卡(A卡)简介
- obs可以装手机吗?_原神PC和手机数据互通吗 PC和手机可以一起玩吗
- ios微信本地视频上传到服务器,ios本地视频wx.uploadFile上传
- 一些关于毫米波技术的文献
- matlab中二维插值函数interp2的使用
- html里嵌入语音,HTML5语音合成API语音/语言支持
- Sublime Text3(mac)一些插件和快捷键
- Centos7:mysql5.6安装,配置及使用(RPM方式)