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

印刷厂网站建设方案怎么免费的安装wordpress主题

印刷厂网站建设方案,怎么免费的安装wordpress主题,电子商务网站开发实例论文,psdw做网站给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改: 操作 1 :如果二进制串包含子字符串 "00" ,你可以用 "10" 将其替换。 比方说, "00010"…

给你一个二进制字符串 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"

纯思维题,需要在两个对字符串的操作中找到规律。考虑两个操作:

00 -> 10,数字变大了,符合最大二进制字符串的所求。

10 -> 01,数字变小了,那么我们为什么需要这个操作?他的意义是什么?

能够显而易见想到的就是010,通过10 -> 01,虽然单步变小了,但修改后变为001,进而使用00 -> 10,最终得到101,整体是变大的。

观察010 -> 001,操作2的起到的作用是什么?

将1右移,将0连起来,进而能够使用操作1对整体进行扩大。

那么将示例按照这个思路解析:

  • "000110" -> "000101"
  • "000101" -> "000011"  到此已经将所有0连续起来。

继续考虑所有连续的0最终会变成什么?

00 -> 10,0000就会变成1000,再变成1100,再变成1110。即000011 -> 111011。

使用上面的过程多分析几个字符串就能得到规律:

  1. 通过操作2,可以将101010001这种1/0交替的字符串变成100000111这种1...0...1交替的字符串。
  2. 再通过操作1,可以将连续的0,变成仅最后一位为0,其余位为1的字符串。00000 -> 11110。

也就是说,最终得到的最大二进制字符串中,最多只有一个0。

而且这个0的位置可以通过原字符串中1和0出现的次数,以及第一个0出现的位置确定。

以10101001为例:

  • 首先出现0之前的1是不需要改动的。
  • 记录第一个出现0的位置,zero_first = 1。
  • 遍历字符串得到所有0的个数,num = 4。
  • 那么按照上面的分析,原字符串可以变成10000111。
  • 进而变成11110111,剩余0的位置位于下标  zero_first + num -1处。

这里剩余的问题就是严格证明为什么按照这个流程下来得到的数是最大的。

从直觉上,想让字符串变大,就尽可能的让所有字符是1,并且如果有0,0的位置要尽量靠后。上面过程得到的结果正符合这个直觉。

假设最终还有一个数比得到的11110111大,那么这个数中0的位置一定要比11110111靠右,并且这个数一定能在11110111基础上通过操作1和操作2得到。而操作1和操作2中将字符串变大的操作需要至少两个0,而11110111只有1个0,所以不存在这个数。

class Solution {public String maximumBinaryString(String binary) {int first_zero_index = binary.indexOf('0');int zero_count = 0;int length = binary.length();if(first_zero_index < 0){return binary;}for(int i = first_zero_index;i < length;i++){// if(binary.charAt(i) == '0'){//     zero_count++;// }zero_count -= binary.charAt(i) - '1';}return "1".repeat(first_zero_index + zero_count - 1) + "0" + "1".repeat(length - zero_count - first_zero_index);}
}

这里还有一个值得注意的地方,关注代码中注释掉的部分。他们的效率差别会有多大?

            // if(binary.charAt(i) == '0'){//     zero_count++;// }zero_count -= binary.charAt(i) - '1';

原因:

  • 字符比较(binary.charAt(i) == '0')需要将字符转换为数字进行比较,这是一个相对耗时的操作。
  • 字符减法(binary.charAt(i) - '1')直接将字符转换为数字,然后执行减法运算,这是一个更快的操作。

因此,对于长字符串,zero_count -= binary.charAt(i) - '1' 的效率将比 binary.charAt(i) == '0' 高得多。

http://www.yayakq.cn/news/74540/

相关文章:

  • 陕西示范校建设专题网站wordpress分类页面模板
  • 江西网站开发公司电话物业公司网站模板
  • 秦皇岛和平大街网站建设求一个dw做的网站
  • 响应式网站建设信息建设网站基础知识
  • 深圳网站建设公司乐云seo598公司商标设计图
  • 图库下载网站源码模板网站如何建站
  • 河北建设协会官方网站网页制作的代码
  • 番禺区建站服务商花生壳免费域名注册网站
  • 东莞网站建设 石化泰州学习网站建设
  • access如何与网站连接数据库毕业设计网站建设体会
  • 网站空间就是服务器吗关键词你们懂的
  • 百度站长收录免费商城网站模板下载
  • 做性的网站自己的主机做服务器网站如何备案
  • 培训网站建设公司天津网页制作网页报价
  • 精品网站建设费用 地址磐石网络站长工具
  • 台州网站建设制作网站建设托管公司
  • 345诛仙网站是谁做的php购物网站开发uml图
  • 网站的内容与功能设计写网站论文怎么做
  • 企业网站初始期如何优化怎么找电商卖自己的产品
  • 鲜花网站建设的项目介绍德阳北京网站建设
  • 怎么建国外网站短网址是什么
  • 网站公司缺点网站建设公司需要有什么东西
  • 网站建设一下需要多少费用宁浩wordpress
  • 太原网站建设与维护网站如何免费推广
  • 福州建站开发专业做网站广州
  • 网站开发与微信对接wordpress文章模型插件
  • 安徽海绵城市建设协会网站免费网站alexa排名查询
  • 网站建设哪里好 厦门青岛中小微企业互联网站建设补贴
  • 网站建设980元浙江信息港官网首页
  • 性价比最高的网站建设python制作的网站