当前位置: 首页 > news >正文

做自媒体小视屏哪个网站好seo引擎搜索入口

做自媒体小视屏哪个网站好,seo引擎搜索入口,企业网站的设计,网站收录不好【LetMeFly】1702.修改后的最大二进制字符串:脑筋急转弯(构造,贪心) 力扣题目链接:https://leetcode.cn/problems/maximum-binary-string-after-change/ 给你一个二进制字符串 binary ,它仅有 0 或者 1 组…

【LetMeFly】1702.修改后的最大二进制字符串:脑筋急转弯(构造,贪心)

力扣题目链接:https://leetcode.cn/problems/maximum-binary-string-after-change/

给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改:

  • 操作 1 :如果二进制串包含子字符串 "00" ,你可以用 "10" 将其替换。
    <ul><li>比方说, <code>"<strong>00</strong>010" -> "<strong>10</strong>010"</code></li>
    </ul>
    </li>
    <li>操作 2 :如果二进制串包含子字符串 <code>"10"</code> ,你可以用 <code>"01"</code> 将其替换。
    <ul><li>比方说, <code>"000<strong>10</strong>" -> "000<strong>01</strong>"</code></li>
    </ul>
    </li>
    

请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 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 <= 105
  • binary 仅包含 '0' 和 '1'

解题方法:构造(贪心)

题目分析

如果给定字符串中没有0,则不在本次讨论的范围之列,直接返回原字符串。

推论1:最终字符串中一定有0

仅有的两种变换分别是00->1010->01,只能减少0的个数,但永远不可能将所有0消除。

推论2:最终字符串中一定只有一个0

10111011为例,该字符串中有两个0,则可以进行以下变换10111011->10011111->11011111,具体变换过程如下:

10111011
10110111 ---+
10101111    +---后面的那个0不断地通过10->01的变换最终和前面那个0相邻
10011111 ---+
11011111 -> 相邻两个0通过00->10的变换使得二进制字符串相比于初始值更大了

也就是说,假设最终字符串中有两个0,那么后面的那个0一定可以通过10->01的变换与前面的0相邻,相邻两个0再通过00->10变换,使得第一个0变成了1,字符串值更大了。

若有多个0则同理,最终一定只剩下一个0,变成111..11011..111的形态。

为什么不继续变化了呢?因为1101都不可变,唯一可变的是10->01。但是这么变的话相当于“0往前移”了,字符串值更小,不可取。

如何判断最终字符串中0的位置?

由给定的两种变换00->1010->01可以发现,0要么被消除(变换一)要么左移(变换二),单纯的左移会导致字符串变小,因此尽量将最前面的0“消除”。

如何消除?通过变换一消除。通过推论2我们知道,只要存在两个0,则右边的0必定能千里迢迢地来到左边的0身边并与之进行变换一:

111..11011..11011..11
111..11001..11111..11
111..11101..11111..11

也就是说,第一个0的右边每存在一个0,就能让第一个0的位置“右移一位”。

最终第一个0(也就是唯一的一个0)的位置,是原始字符串中第一个0的位置,再右移 0 的总个数 − 1 0的总个数 - 1 0的总个数1位。

具体方法

给定字符串,统计其中0的个数(记为cnt0)。

若无0,则直接返回原始字符串;否则继续。

找到字符串中第一个0的位置(记为pos0),构造一个只有pos0 + cnt0 - 1这个位置为0其余位置全部为1的字符串并返回。

时空复杂度分析

  • 时间复杂度 O ( l e n ( b i n a r y ) ) O(len(binary)) O(len(binary))
  • 空间复杂度 O ( l e n ( b i n a r y ) ) O(len(binary)) O(len(binary)):空间复杂度来自字符串构造过程中的临时变量。

AC代码

C++
class Solution {
public:string maximumBinaryString(string binary) {int cnt0 = count(binary.begin(), binary.end(), '0');if (!cnt0) {return binary;}int first0 = binary.find('0');return string(first0 + (cnt0 - 1), '1') + '0' + string(binary.size() - (first0 + (cnt0 - 1)) - 1, '1');}
};
Python
class Solution:def maximumBinaryString(self, binary: str) -> str:cnt0 = binary.count('0')if not cnt0:return binaryfirst0 = binary.find('0')pos0 = first0 + (cnt0 - 1)return '1' * pos0 + '0' + '1' * (len(binary) - pos0 - 1)

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/137593422

http://www.ritt.cn/news/24357.html

相关文章:

  • 用dw做网站的步骤网络的推广方式有哪些
  • 南京公共工程建设中心网站网站优化关键词价格
  • 网站公司的利润在哪里网络营销论文3000字
  • 商城网站要怎样设计淘宝怎样优化关键词
  • 摄影网站介绍如何在百度上添加店铺的位置
  • 室内装饰装修施工图集搜索引擎优化排名工具
  • 做兼职用什么网站最好短视频seo询盘系统
  • 日本中古手表网站微信群二维码推广平台
  • 青岛创世网络网站建设南宁网站seo排名优化
  • 动画网站制作seo网站优化培训公司
  • 美国网站建设公司哪家好石家庄谷歌seo公司
  • 建站63年来第一次闭站?北京站辟谣seo教程有什么
  • 模块建站平台国内广告联盟平台
  • wordpress安装到子目录郑州优化公司有哪些
  • 自学网站建设最快要多久广州seo服务公司
  • html做分模块的网站网络运营与推广
  • 做网站应达到什么效果亚马逊seo推广
  • 做网站教程视频互联网营销
  • 夏门建设局网站三一crm手机客户端下载
  • 手机端网站设计尺寸今日热榜
  • 关于设计网站站内推广的方法和工具
  • 学做巧裁缝官方网站昆明seo
  • 国外建设工程招聘信息网站网络营销的方式和手段
  • 网站建设流程及细节百度首页纯净版
  • 良乡网站建设公司宁波seo搜索排名优化
  • 个人网站做cpa国外最好的免费建站
  • 番禺人才网招聘司机关键词排名优化营销推广
  • 网站建设设计报告前言实时热搜榜
  • 建宣传网站seo搜索引擎优化人才
  • 荔湾建网站公司淘宝优化关键词的步骤