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阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在python中精确地进行浮点数的四舍五入

在python试题中碰到这么一道题&#xff1a; 输入三个浮点数,求它们的平均值并保留 1 位小数,对小数后第二位数进行四舍五入,最后输出结果 错误示范 因为涉及到四舍五入&#xff0c;随便搜了一下&#xff0c;发现了好多博客都用round()&#xff0c;就直接拿来用了 round(1.55…

c语言中的位移位操作

先要了解一下C语言里全部的位运算都是指二进制数的位运算。即使输入的是十进制的数&#xff0c;在内存中也是存储为二进制形式。 “<<”使用方法&#xff1a; 格式是&#xff1a;a<<m&#xff0c;a和m必须是整型表达式&#xff0c;要求m>0。 功能&#xff1a…

LeetCode 1704. 判断字符串的两半是否相似

文章目录1. 题目2. 解题1. 题目 给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半&#xff0c;前一半为 a &#xff0c;后一半为 b 。 两个字符串 相似 的前提是它们都含有相同数目的元音&#xff08;‘a’&#xff0c;‘e’&#xff0c;‘i’&#xff0c;‘o’&#…

怎样处理糟糕的代码?

在职业生涯中&#xff0c;程序员难免会遇到糟糕的代码&#xff08;bad code)——但是你并不需要成为一个打败这些糟糕代码的“恶人”。 从轻松的角度来讲&#xff0c;糟糕的代码可以创造大量的就业机会。比如&#xff1a; 需要从诸多优秀开发人员中找一个人来修复错误代码。需…

LeetCode 1706. 球会落何处(模拟)

文章目录1. 题目2. 解题1. 题目 用一个大小为 m x n 的二维网格 grid 表示一个箱子。 你有 n 颗球。箱子的顶部和底部都是开着的。 箱子中的每个单元格都有一个对角线挡板&#xff0c;跨过单元格的两个角&#xff0c;可以将球导向左侧或者右侧。 将球导向右侧的挡板跨过左上…

android listview 异步加载图片并防止错位

网上找了一张图&#xff0c; listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象&#xff0c; 重用 convertView 但没有异步操作也不会有问题。 我简单分析一下&#xff1a; 当重用 convertView 时&#x…

Python最实用的25个小技巧

Python 是一种通用的高级编程语言。用它可以做许多事&#xff0c;比如开发桌面 GUI 应用程序、网站和 Web 应用程序等。 并且&#xff0c;通过处理常见的编程任务&#xff0c;Python 能让开发者专注应用程序的核心功能。此外&#xff0c;Python 语言的简单语法规则进一步简化了…

LeetCode 1705. 吃苹果的最大数目(优先队列)

文章目录1. 题目2. 解题1. 题目 有一棵特殊的苹果树&#xff0c;一连 n 天&#xff0c;每天都可以长出若干个苹果。 在第 i 天&#xff0c;树上会长出 apples[i] 个苹果&#xff0c;这些苹果将会在 days[i] 天后&#xff08;也就是说&#xff0c;第 i days[i] 天时&#xff0…

Action重定向总结

[HttpPost]public ActionResult StudentList( string StudName, string studName, DateTime BirthDay, FormCollection form, string controller, string Action, StudentModels student){//其中StudName为aspx页面中标签的name属性(StudName不区分大小写)//其中BirthDay为页面…

全面系统地总结Linux的基本操作(上)

1、 Linux文件和目录 Windows 和 Linux 文件系统 在 windows 平台下&#xff0c;打开"计算机"&#xff0c;我们看到的是一个个的驱动器盘符&#xff1a;每个驱动器都有自己的根目录结构&#xff0c;这样形成了多个树并列的情形&#xff0c;如图所示&#xff1a; 在 …

Pytorch 神经网络nn模块

文章目录1. nn模块2. torch.optim 优化器3. 自定义nn模块4. 权重共享参考 http://pytorch123.com/ 1. nn模块 import torch N, D_in, Hidden_size, D_out 64, 1000, 100, 10torch.nn.Sequential 建立模型&#xff0c;跟 keras 很像 x torch.randn(N, D_in) y torch.randn…

全面系统地总结Linux的基本操作(下)

4、 Linux命令-系统管理 4.1 查看日历:cal cal 命令用于查看当前日历&#xff0c;-y 显示整年日历&#xff1a; 4.2 显示或设置日期:date 设置时间格式&#xff08;需要管理员权限&#xff09;&#xff1a; date [MMDDhhmm[[CC]YY][.ss]] format CC 为年前两位 yy 为年的后…

腾讯QQ企业邮箱POP3/SMTP设置

腾讯企业邮箱支持通过client进行邮件管理。POP3/SMTP协议收发邮件server地址分别例如以下。接收邮件server&#xff1a;pop.exmail.qq.com (port 110)发送邮件server&#xff1a;smtp.exmail.qq.com (port 25)同一时候支持SSL加密方式登录&#xff0c;此时须要更改一下port号。…

免费个人博客:使用hexo+github搭建详细教程

前言 使用github pages服务搭建博客的好处有&#xff1a; 全是静态文件&#xff0c;访问速度快&#xff1b;免费方便&#xff0c;不用花一分钱就可以搭建一个自由的个人博客&#xff0c;不需要服务器不需要后台&#xff1b;可以随意绑定自己的域名&#xff0c;不仔细看的话根…

LeetCode 1235. 规划兼职工作(动态规划+二分查找)

文章目录1. 题目2. 解题1. 题目 你打算利用空闲时间来做兼职工作赚些零花钱。 这里有 n 份兼职工作&#xff0c;每份工作预计从 startTime[i] 开始到 endTime[i] 结束&#xff0c;报酬为 profit[i]。 给你一份兼职工作表&#xff0c;包含开始时间 startTime&#xff0c;结束…

刷新页面,无论点击多少次让Element UI的Message消息提示弹出一个

一、遇到的问题 Element UI的Message消息提示是点击一次触发一次的。在开发的时候经常会作为一些校验提示&#xff0c;但是公司的测试人员在进行测试时会一直点&#xff0c;然后就会出现如下图的情况。虽然客户使用的时候一般来说不会出现这种情况&#xff08;毕竟客户不会闲着…

如何让二维码自适应浏览器的尺寸

一、遇到的问题&#xff1a; 正常浏览网页&#xff0c;二维码正常显示&#xff0c;但是随着浏览器的扩大与缩小&#xff0c;二维码尺寸不会随着屏幕自适应 正常浏览&#xff08;截取部分&#xff09;&#xff1a; 缩小浏览器&#xff08;截取部分&#xf…

E6全部刷机包

此版本号基于R533_G_11.11.10P_GSZMCAUT679DA01B_LP064DA_T679DA_S005_E001_P002_R001_G004_1FF.sbf制作耳机接听或挂机正常内置Loader&#xff08;asmotoe2&#xff09;、Console&#xff08;网上的大侠&#xff09;、showQ&#xff08;bint大侠&#xff09;、SetupPKG&#x…

LeetCode 330. 按要求补齐数组(贪心)

文章目录1. 题目2. 解题1. 题目 给定一个已排序的正整数数组 nums&#xff0c;和一个正整数 n 。 从 [1, n] 区间内选取任意个数字补充到 nums 中&#xff0c;使得 [1, n] 区间内的任何数字都可以用 nums 中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数…

系统总结vue组件间通信、数据传递(父子组件,同级组件)

总结一下对vue组件通信的理解和使用。一、组件目录结构 父组件&#xff1a;app.vue子组件&#xff1a;page1.vue子组件&#xff1a;page2.vue 父组件 app.vue <template><div id"app"><p>请输入单价: <input type"text" v-model&qu…