【Leetcode】1702. 修改后的最大二进制字符串

文章目录

  • 题目
  • 思路
  • 代码
  • 复杂度分析
    • 时间复杂度
    • 空间复杂度
  • 结果
  • 总结

题目

题目链接🔗
给你一个二进制字符串 b i n a r y binary binary ,它仅有 0 0 0 或者 1 1 1 组成。你可以使用下面的操作任意次对它进行修改:

操作 1 :如果二进制串包含子字符串 " 00 " "00" "00" ,你可以用 " 10 " "10" "10" 将其替换。
比方说, " 00010 " → " 10010 " "00010" \rightarrow "10010" "00010""10010"
操作 2 :如果二进制串包含子字符串 “10” ,你可以用 “01” 将其替换。
比方说, " 00010 " → " 00001 " "00010" \rightarrow "00001" "00010""00001"
请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 x x x 对应的十进制数字大于二进制字符串 y y y 对应的十进制数字,那么我们称二进制字符串 x x x 大于二进制字符串 y y y

示例 1

输入:binary = “000110”
输出:“111011”
解释:一个可行的转换为:
“000110” -> “000101
000101” -> “100101”
“100101” -> “110101”
“110101” -> “110011”
“110011” -> “111011”

示例 2
输入:binary = “01”
输出:“01”
解释:“01” 没办法进行任何转换。

提示

  • 1 ≤ b i n a r y . l e n g t h ≤ 1 0 5 1 \leq binary.length \leq 10^5 1binary.length105
  • b i n a r y binary binary 仅包含 ′ 0 ′ '0' 0 ′ 1 ′ '1' 1

思路

要求通过操作将给定的二进制字符串转换为最大的二进制字符串。根据题目中的提示,可以利用贪心的思想来解决这个问题。

首先观察到在最终的答案中,不会出现连续的 0 0 0,比如说 " 00 " "00" "00"这种情况,因为可以通过操作 1 1 1 将其变为更大的字符串。所以我们可以先将所有的连续的 00 00 00 替换为 10 10 10

其次,最终答案至多包含一个 0 0 0。如果原始字符串中存在 010 010 010,我们可以将最右边的 000 000 000 移动到最左边,然后将其变为 101 101 101。这样可以保证得到的字符串更大。

最后,如果原始字符串中全是 111 111 111,则无需进行任何操作,直接返回原字符串即可。

代码

class Solution {
public:
    string maximumBinaryString(string binary) {
        int len=binary.size();
        int lin=0;
        int linwei=-1;
        for(int i=0;i<len;++i)
        {
            if(binary[i]=='0')
            {
                lin++;
                if(linwei==-1)linwei=i;
            }
        }
        string ans;
        for(int i=0;i<linwei+lin-1;++i)
            ans+='1';
        if(lin)ans+='0';
        else linwei=0;
        for(int i=linwei+lin;i<len;++i)
            ans+='1';
        return ans;
    }
};

在这里插入图片描述

复杂度分析

时间复杂度

O ( n ) O(n) O(n)

空间复杂度

O ( 1 ) O(1) O(1)

结果

总结

利用贪心的思想,通过统计连续0的数量和位置,并对字符串进行操作,使得得到的字符串尽可能大。通过遍历一次字符串,即可得到最终的结果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

背 单 词

单词&#xff1a; 买考研词汇闪过 研究艾宾浩斯遗忘曲线 https://www.bilibili.com/video/BV18Y4y1h7YR/?spm_id_from333.337.search-card.all.click&vd_source5cbefe6dd70d6d84830a5891ceab2bf9 单词方法 闪记背两排&#xff08;5min&#xff09;重复一遍&#xff08;2mi…

解决Can‘t connect to HTTPS URL because the SSL module is not available

把C:\develop\An3\Library\bin的这些文件&#xff0c;复制到C:\develop\An3\DLLs中

2006年重邮801信号与系统考研真题与详解

本系列文章为重庆邮电大学801信号与系统考研真题与详解&#xff0c;前面文章链接如下&#xff1a; 2003年重邮801信号与系统考研真题与详解 2004年重邮801信号与系统考研真题与详解 2005年重邮801信号与系统考研真题与详解 文章目录 前言一对一极速提分辅导2006年重邮801信号与…

基于GAN的图像补全实战

数据与代码地址见文末 论文地址:http://iizuka.cs.tsukuba.ac.jp/projects/completion/data/completion_sig2017.pdf 1.概述 图像补全,即补全图像中的覆盖和缺失部分, 网络整体结构如下图所示,整体网络结构还是采取GAN,对于生成器,网络结构采取Unet的形式,首先使用卷积…

字节发布AnimateDiff-Lightning文生视频模型——可在线免费试玩

Sora文生视频大模型 随着Sora文生视频大模型的爆火&#xff0c;文生视频大模型必定是各大人工智能公司竞争的主要领域。虽然 Sora模型的视频效果绝对是领先地位&#xff0c;但是Sora模型目前还没有开放使用&#xff0c;我们并无法直接使用。前期我们也介绍过字节发布的MagicVi…

【优选算法专栏】专题十三:队列+宽搜(一)

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

C++ 线程库(thread)与锁(mutex)

一.线程库(thread) 1.1 线程类的简单介绍 thread类文档介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如windows和linux下各有自己的接口&#xff0c;这使得代码的可移植性比较差。C11中最重要的特性就是对线程进行支持了&#xff…

群联AI云防护中的防盗链技术原理及其作用探析---

一、引言 随着云计算和AI技术的快速发展&#xff0c;云防护方案已经成为现代企业防范网络攻击和保护数字资产的重要手段之一。群联科技作为存储解决方案和技术服务的领导者&#xff0c;已将其AI技术应用于云端防护系统中&#xff0c;并特别强化了防盗链功能&#xff0c;以帮助…

element-plus blur和select冲突失效导致移除焦点清空文本框内容失效解决方案

问题 需求是做一个查询企业的功能&#xff0c;期望必须进行选择后进行查询&#xff0c;如果用户自主输入并没有进行选择&#xff0c;失去焦点的时候清空文本框里面的内容&#xff0c;给el-autocomplete添加blur事件后发现&#xff0c;在下拉没有出现之前快速失去焦点才能触发b…

SuperGluePretrainedNetwork调用接口版本(两个版本!)

本脚本是一个基于Python的应用&#xff0c;旨在演示如何使用SuperGlue算法进行图像之间的特征匹配。SuperGlue是一个强大的特征匹配工具&#xff0c;能够在不同的图像之间找到对应的关键点。这个工具尤其适用于计算机视觉任务&#xff0c;如立体视觉、图像拼接、对象识别和追踪…

express操作mysql数据库的方法总结

作为前端&#xff0c;我们无需去考虑数据库的问题&#xff0c;业务场景需要的话&#xff0c;我们可以mock数据&#xff0c;满足暂时的联调场景。但是对于数据库&#xff0c;我们前端可以不用&#xff0c;却不能不了解不懂。所以这篇文章整理下&#xff0c;nodejs框架express中怎…

【通信原理笔记】【三】模拟信号调制——3.5 角度调制(FM、PM)与其频谱特性

文章目录 前言一、相位与频率二、PM和FM的数学表示三、FM的频谱四、FM信号的带宽——卡松公式总结 前言 在之前介绍的几种调制方式中&#xff0c;我提到信噪比时计算的是用户解调后的信噪比&#xff0c;然而在北邮通信原理课中考虑的是解调器输入的信噪比&#xff0c;即考虑的…

H-GAP: Humanoid Control with a Generalist Planner

ICLR 2024 paper Intro 本文方法研究利用大量人类动捕数据以及衍生的类人轨迹数据&#xff0c;基于MPC实现下游任务中机器人运动控制。 method H-GAP 的算法框架分为三个部分&#xff1a;基于VQ-VAE对状态动作序列的离散化&#xff0c;基于Transformer对latent code的先验…

爬虫 新闻网站 以湖南法治报为例(含详细注释,控制台版) V2.0 升级自定义查询关键词、时间段

目标网站&#xff1a;湖南法治报 爬取目的&#xff1a;为了获取某一地区更全面的在湖南法治报已发布的宣传新闻稿&#xff0c;同时也让自己的工作更便捷 环境&#xff1a;Pycharm2021&#xff0c;Python3.10&#xff0c; 安装的包&#xff1a;requests&#xff0c;csv&#xff…

uniapp 2.0可视化开发工具高级事件使用技巧探索

摘要 随着移动应用市场的不断扩大和前端技术的飞速发展&#xff0c;开发者们对于快速、高效构建跨平台应用的需求日益增强。uniapp作为一款优秀的跨平台应用开发框架&#xff0c;凭借其强大的功能和易用的特性&#xff0c;赢得了广大开发者的青睐。在uniapp 2.0版本中&#xf…

基于SpringBoot + Vue实现的在线答疑系统设计与实现+毕业论文+答辩PPT

介绍 学生角色&#xff1a; 1.注册、登录功能&#xff1a;学生可以通过系统完成注册和登录操作&#xff0c;进入学生专属界面。 2.个人信息修改功能&#xff1a;学生可以查看和修改自己的个人信息&#xff0c;包括姓名、联系方式等。 3.问题发布功能&#xff1a;学生可以在线发…

TypeScript—详解、小案例(配合源代码)

简介&#xff1a;TypeScript是微软开发的 JavaScript 的超集&#xff0c;TypeScript兼容JavaScript&#xff0c;可以载入JavaScript代码然后运行。TypeScript与JavaScript相比进步的地方 包括&#xff1a;加入注释&#xff0c;让编译器理解所支持的对象和函数&#xff0c;编译器…

水位实时监测系统的工作原理

TH-SW3水位实时监测系统有多种应用场景&#xff0c;包括但不限于防汛、水文地质勘察、水资源管理等领域。例如&#xff0c;雷达水位监测站利用雷达微波技术进行水位测量&#xff0c;适用于河流、湖泊、水库等水域;积水监测站则主要使用在低洼地区&#xff0c;为城市内涝治理提供…

机场数据治理系列介绍(5)民用机场智慧能源系统评价体系设计

目录 一、背景 二、体系设计 1、评价体系设计维度 2、评价体系相关约定 3、评价指标体系框架设计 4、能源利用评价指标 5、环境友好评价指标 6、智慧管控评价指标 7、安全保障评价指标 三、具体落地措施 一、背景 在“双碳”国策之下&#xff0c;各类机场将能源系统建…

LeetCode110:平衡二叉树

题目描述 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 解题思想 使用递归依次计算左子树的高度和右子树的高度 代码 class Solution { public:int height(TreeNode* node) {if (node nullptr) return 0;int leftT height(node->left);if (leftT -1) return -1;…