Leetcode-1702-修改后的最大二进制字符串-c++

题目详见https://leetcode.cn/problems/maximum-binary-string-after-change/

官方题解

我们从字符串左边第一位开始依次遍历,如果是 1 则不用改变,如果是 0,我们则想办法将其变成 1。 我们会找到下一位出现的 0,利用操作 2 我们可以使得这两个 0 相邻,再使用操作 1 使得 00 变成 10。 我们依次执行这个操作,直到字符串中没有第二个 0,或者达到字符串结尾。

几个关键点

  • 最终整个字符串里面只会有一个0
  • 按照题解的意思,我们找到第一个0之后继续往后找,直到找到第二个0,期间有着几种情况:
    • {第一个0后面立马找到第二个0;}
      • 此时的情况是00,可以直接利用规则1变成10(最大)
    • {第一个0后面隔了几个1,然后才找到第二个0;}
      • 此时第二个0前面一定有1,所以此时对于第二个0他现在的处境是10
      • 此时按照规则2可以将10变成01
      • 我们可以大致看到10这种组合结合规则2可以让我们把0往前"搬"一位,得到01
      • 此时如果第一个0后面隔了几个1,那么我们只需要不断调用规则2就好了,最终一定会得到00
    • {没有找到找到第二个0;}
      • 那此时就是01的情况了,束手无策。

注释代码

class Solution {
public:string maximumBinaryString(string binary) {int n = binary.size();int j = 0;for(int i = 0; i < n; i++){if(binary[i] == '0'){// 在字符串中找到下一个'0'的位置,这个位置要么在i之后,要么在字符串中第一个为'0'的位置while(j <= i || (j < n && binary[j] == '1')){j++;}if(j < n){// 结合上面几个关键点中的第二个关键点的第二种情况,// 我们实际上是吧第二个0搬到了第一个0后面凑出00,// 然后使用规则1将00变成较大的10binary[i] = '1';	// 00变成的10中的1binary[j] = '1';	// 原本的第二个0binary[i + 1] = '0';	// 00变成的10中的0}}}return binary;}
};

笔者也在新手学习期中,所写的内容主要与大家交流学习使用,如有发现任何问题敬请指正!

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

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

相关文章

git修改某个远端服务器的地址的方式以及4种remote

假设本地有1个远端仓库&#xff0c;默认一般叫origin&#xff0c;原来对应的git url是&#xff1a;gitxxx.git # 查看方式&#xff1a; git remote -v# 修改方式&#xff1a; git地址url指定远程仓库&#xff1a;&#xff08;常用&#xff09; git remote set-url origin gitn…

大宋咨询(深圳神秘顾客调查)开展某银行分行神秘顾客检查

银行神秘顾客检查是一项重要的服务质量控制活动&#xff0c;旨在通过模拟客户体验来评估银行服务的质量和水平。这种检查方式有助于银行发现问题、改进服务&#xff0c;提升客户满意度。下面将详细介绍如何进行银行神秘顾客检查。大宋咨询&#xff08;深圳银行神秘顾客公司&…

深入浅出Redis(十二):Redis的排序命令Sort

引言 Redis是一款快速、优秀的键值对数据库&#xff0c;提供丰富的数据结构能在各种场景下实现功能&#xff0c;同时也提供丰富的命令来完成各种各样的功能&#xff0c;本篇文章将深入浅出的解析Sort命令的原理以及使用 原理 Sort 命令用来对list、set、zset对象进行排序&am…

springboot组件的单例模式和分布式分析

springboot组件的单例模式和分布式分析 一、基本概念 在Spring Boot应用中&#xff0c;单例模式是非常常见的一种设计模式&#xff0c;它被广泛应用于Bean的生命周期管理。Spring容器默认会将所有的Component、Service、Repository和Controller注解标记的类作为单例对象进行实…

JavaEE实验三:3.5学生信息查询系统(动态Sql)

题目要求: 使用动态SQL进行条件查询、更新以及复杂查询操作。本实验要求利用本章所学知识完成一个学生信息系统&#xff0c;该系统要求实现3个以下功能: 1、多条件查询&#xff1a; 当用户输入的学生姓名不为空&#xff0c;则根据学生姓名进行学生信息的查询&#xff1b; 当用户…

Day:006(1) | Python爬虫:高效数据抓取的编程技术(爬虫工具)

selenium介绍与安装 Selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的&#xff0c;类型像我们玩游戏用的按键精灵&#xff0c;可以按指定的命令自动操作&#xff0c;不同是Selenium 可以直接运行在浏览器上&#xff0c;它支持所有主流的浏览器&am…

C++11 设计模式1. 模板方法(Template Method)模式学习。UML图

一 什么是 "模板方法&#xff08;Template Method&#xff09;模式" 在固定步骤确定的情况下&#xff0c;通过多态机制在多个子类中对每个步骤的细节进行差异化实现&#xff0c;这就是模板方法模式能够达到的效果。 模板方法模式属于&#xff1a;行为型模式。 二 &…

个人网站开发记录(七)——三系统后端nodejs+express

前言 这种已经完全工程化了的&#xff08;&#xff09;后端其实已经没啥好说的了&#xff0c;因为就是单纯的写接口然后调用接口就完事了&#xff01; 正文 唯一值得一提的大概是我在写这个系统的时候搞了https的链接&#xff0c;具体来说就是先申请一个ssl证书&#xff0c;…

2024-4-10-day13-实战:商城首页(上)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 ✍作业 ✍作业 .bg-backward {width: 60px; height: 60px;background: url(..…

Unity 通过权重做随机

我们可以通过Random.Range方法结合权重来实现随机选择。具体步骤如下&#xff1a; 首先&#xff0c;创建一个数组&#xff0c;其中包含你要选择的项目&#xff0c;并为每个项目分配一个权重值。 计算所有权重值的总和。 使用Random.Range生成一个介于0和总权重之间的随机数。…

Jmeter常用参数化技巧总结

JMeter是一个开源的Java应用&#xff0c;用于加载功能测试和性能测量。在测试过程中&#xff0c;我们经常需要对测试数据进行参数化&#xff0c;以便模拟不同的用户场景和数据输入。以下是一些常用的JMeter参数化技巧总结&#xff1a; CSV Data Set Config&#xff1a; 使用CSV…

Oracle通过函数动态拼接SQL并返回执行结果

最近接到优化程序的工作&#xff0c;程序使用kettle编写&#xff0c;有一段业务处理&#xff0c;需要使用kettle遍历动态拼接执行SQL(数据库(oracle)中存储SQL的查询条件&#xff0c;例如&#xff1a;AND ITEMK001)&#xff1b;测试发现kettle遍历非常耗时(情理中&#xff0c;遍…

常见分类算法

一、ChatGPT 在人工智能和机器学习领域&#xff0c;分类算法是一种监督学习技术&#xff0c;用来识别输入数据所属的类别。以下是一些常见的分类算法&#xff1a; 1. 决策树&#xff08;Decision Trees&#xff09;: 决策树通过创建一系列的问题或决策&#xff0c;来将数据…

让我看看谁还在用conda?

目录 前言下载方式安装命令使用方式及小技巧一些常用的命令安装软件小技巧一些关于conda环境的建议 最后 前言 相信大家在用conda的时候都遇到过各种各样的问题吧&#xff0c;比如创建环境非常缓慢、安装软件并解析依赖的速度非常感人等&#xff0c;有时候等待半小时甚至更久最…

mysql查询某条记录所在的行号

有时候我们想知道某条记录在表中的多少行&#xff0c;这样我们就可以开始继续上一次的任务了。 下面是SQL&#xff0c;可以直接执行&#xff0c;把表名改成自己真实的表名就好了&#xff0c;还得注意下子查询的排序&#xff0c;也得按自己真实需求来即可&#xff1a; SET row…

WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统

WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统 在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用 1、先决条件&#xff1a; 1&#xff09;需要使用 Windows 10 版本 19044 或 Windows 11 才能使用此功能。 2&#xff09;已安装适用于 vGPU 的驱动程序。 若…

Mongodb入门--头歌实验MongoDB数据库安全

MongoDB 默认的启动是不验证用户名和密码的&#xff0c;启动 MongoDB 服务后&#xff0c;可以直接用命令 mongo 连接上来&#xff0c;对所有的库具有 root 权限。 这种情况下数据就像在“裸奔”一样&#xff0c;任何人都能修改我们的数据&#xff0c;所以我们要添加一些限制&a…

小样本计数网络FamNet(Learning To Count Everything)

小样本计数网络FamNet(Learning To Count Everything) 大多数计数方法都仅仅针对一类特定的物体&#xff0c;如人群计数、汽车计数、动物计数等。一些方法可以进行多类物体的计数&#xff0c;但是training set中的类别和test set中的类别必须是相同的。 为了增加计数方法的可拓…

构建你的第一个知识图谱项目:从零开始

构建你的第一个知识图谱项目&#xff1a;从零开始 引言 在数据驱动的世界中&#xff0c;知识图谱不仅仅是一个概念上的创新&#xff0c;它已经成为了连接复杂信息、提供深入见解的强大工具。无论您是数据科学家、软件开发人员还是业务分析师&#xff0c;构建知识图谱可以帮助您…

二百三十、MySQL——MySQL表的索引

1 目的 梳理一下目前MySQL维度表的索引情况&#xff0c;当然网上也有其他博客专门讲MySQL索引的&#xff0c;我这边只是梳理一下目前的索引状况而已 2单列索引 2.1 索引截图 2.2 建表语句 3 联合索引 3.1 索引截图 3.2 建表语句 4 参考的优秀博客 http://t.csdnimg.cn/ZF7…