文章目录

  • 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. 修改后的最大二进制字符串(贪心)相关推荐

  1. Leetcode1702. 修改后的最大二进制字符串[C++题解]:思维题

    文章目录 题目分析 题目链接 题目分析 只有2种操作:00变成10,10变成01,为了使得结果最大,需要前面尽可能变成1.怎么才能使得某一个的0变成1呢? 经过观察,只要这个0后面的某一位还有0,该位 ...

  2. LeetCode 1980. 找出不同的二进制字符串

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串数组 nums ,该数组由 n 个 互不相同 的二进制字符串组成,且每个字符串长度都是 n . 请你找出并返回一个长度为 n 且 没有出现 ...

  3. LeetCode 1784. 检查二进制字符串字段

    文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制字符串 s ,该字符串 不含前导零 . 如果 s 最多包含 一个由连续的 '1' 组成的字段 ,返回 true​​​ .否则,返回 fals ...

  4. 已知字符串STRING以‘$’为结束标志;统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变。要求分别在屏幕上输出原字符串以及修改后的字符串。

    只为记录汇编作业 题目:已知字符串STRING以'$'为结束标志:统计其中小写字母的个数,结果送到COUNT单元,并把该字符串中的小写字母变成大写字母,其它字符保持不变.要求分别在屏幕上输出原字符串以 ...

  5. C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数

    C++描述 LeetCode 5676. 生成交替二进制字符串的最少操作数   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在C ...

  6. LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)

    LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...

  7. LeetCode每日一题——1758. 生成交替二进制字符串的最少操作数

    LeetCode每日一题系列 题目:1758. 生成交替二进制字符串的最少操作数 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个仅由字符 '0' 和 '1' ...

  8. mysql存图片二进制文件_将图片(二进制文件)存储于数据库,论文件字节流与二进制字符串相互转换...

    开发中遇到存储图片文件于数据库这样的需求. 我们知道文件本身就是一份二进制数据,不同类型的文件只是编码形式不同,对应的解读形式不同,无论txt文件.jpg文件亦或是mp4文件,本质上都是0和1组成的. ...

  9. 算法---找出第 N 个二进制字符串中的第 K 位(Kotlin)

    题目 给你两个正整数 n 和 k,二进制字符串 Sn 的形成规则如下: S1 = "0" 当 i > 1 时,Si = Si-1 + "1" + reve ...

最新文章

  1. 关于 Hive 报 SemanticException 错误的问题
  2. python智能办公系统_用 Python 自动化办公能做到哪些有趣或有用的事情?
  3. 手写自定义注解实现思路
  4. Go命令行库Cobra的使用
  5. linux下识别内存,c – Linux:识别内存中的页面
  6. java九年_Java 9明年9月釋出正式版
  7. Flutter布局锦囊---简单的应用栏
  8. Promise API 简介
  9. c#语言开发教程pdf版,用C#语言制作PDF文件全攻略图文教程
  10. Ubuntu 下网易云音乐出现“加载失败,网络错误,可以在设置中发送反馈”问题及解决
  11. matlab临界转速教学,转子动力学求解转子临界转速与固有频率详解.ppt
  12. 锁定关闭计算机快捷键,锁定电脑快捷键怎么更改?
  13. hugepage oracle 12c,Huge page使用的一些问题
  14. markdown文件怎么转换成html,将markdown文件转换为html文件(MarkdownPad)
  15. Java版数据结构之数组模拟环形队列demo
  16. Mac 电脑添加代理服务器
  17. 深入理解WKWebView白屏
  18. 从零开始学习信号完整性--7-SI分析仿真
  19. 关于GPU一些笔记(SIMT方面)
  20. 数据库数据的备份和还原

热门文章

  1. linux找link原路径,readlink命令找出符号链接所指向的位置
  2. 解决:building 'twisted.test.raiser' extension安装scrapy报错
  3. 互联网金融行业申请评分卡(A卡)简介
  4. obs可以装手机吗?_原神PC和手机数据互通吗 PC和手机可以一起玩吗
  5. ios微信本地视频上传到服务器,ios本地视频wx.uploadFile上传
  6. 一些关于毫米波技术的文献
  7. matlab中二维插值函数interp2的使用
  8. html里嵌入语音,HTML5语音合成API语音/语言支持
  9. Sublime Text3(mac)一些插件和快捷键
  10. Centos7:mysql5.6安装,配置及使用(RPM方式)