拼多多:最长1串的种类数

题目:(根据回忆写的,只描述了大概意思)

  现有一组0、1字符串,其字符数为m,可以将0更改为1的最大次数为n。在字符串中肯定存在在改动n次以内的最长的只由1组成的子串。最长子串可能会出现多次,现在求最长子串出现的次数。

  其中,如果1的位置不发生变化就认为是一次。例如:对3,2, “010”来讲,先改第一个0后改第二个0的结果都是“111”,只算做最长子串出现一次。

例子:

样例:5,2,"10101"

样例结果:1

样例代码:

 1 package test4ljd;
 2
 3 import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;
 4
 5 public class test4ljd {
 6     public static void main(String[] args){
 7         //System.out.println("------------"+ maxZi(7,1,"1010101"));
 8         System.out.println("------------"+ maxZi(5,2,"10101"));
 9
10     }
11
12     public static int maxZi(int m, int n, String s){
13         int countf = 0;
14         //代码内容
15
16         return countf;
17     }
18 }

  这个问题看着就头疼,感觉像是动态规划,自己实在是不喜欢动态规划的问题,所以就用枚举的方式暴力解决了。

  解决的方式就是,因为我们不知道经过n次以内将0改为1的最长连续1子串为多大。所以

    我们就先假设其最长连续1子串为字符串的长度,然后比对得到需要将0修改几次,如果修改次数在允许范围之内那么就说明此子串为最大子串,即种类数为1个;

    如果最长连续1子串的长度不是字符串长度,接着假设最长连续1子串为字符串长度减1,然后依次和长度为字符串长度减2的子串对比,得到需要修改0的次数,如果修改次数在允许范围内,那么就说明最大子串为此子串,种类个数需要在比对的过程中计数,如果最长子串不是此子串,那么继续;

    假设最长1子串的长度位字符串长度减2,然后依次比对,得到修改0的次数,.............

  很笨的解决方案,甚至在很长的时候,会浪费大部分的时间和空间在程序中,如果字符串长度很长的情况下。

仓促间写的代码如下:

 1 package test4ljd;
 2
 3 import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;
 4
 5 public class test4ljd {
 6
 7     public static void main(String[] args){
 8
 9         //System.out.println("------------"+ maxZi(7,1,"1010101"));
10         System.out.println("------------"+ maxZi(5,2,"10101"));
11
12     }
13
14     public static int maxZi(int m, int n, String s){
15         int countf = 0;
16
17         int[] a = new int[m];
18         for (int i = 0; i < a.length; i++) {
19             a[i]=Integer.valueOf(s.charAt(i)-48);
20             if (a[i]==1) {
21                 a[i] = -1;
22             }
23         }
24
25         //寻找最大子串
26         for (int i = m; i > 0; i--) {
27             //设最大子串为b
28             int[] b = new int[i];
29             int[] f = new int[i];
30             for (int j = 0; j < b.length; j++) {
31                 b[j] = 1;
32             }
33             //遍历看最小改变次数多少
34             countf = 0;
35             boolean countg = false;
36             int count = 0;
37             int l = m-i;
38             for(int j = 0; j <= l;j++){
39                 System.arraycopy(a, j, f, 0, i);
40                 //两个数组对应位置相加,并求和
41                 count = 0;
42                 for (int k = 0; k < b.length; k++) {
43                     count += (b[k] + f[k]);
44                     if (count > n) {
45                         break;
46                     }
47                 }
48                 if (count <= n) {//寻找到最大子串
49                     countg = true;
50                     countf+=1;
51                 }
52             }
53             if (countg) {//寻找到最大子串,并保留countf,此时countf是方法数
54                 break;
55             }
56         }
57
58         return countf;
59     }
60 }
时间: 2024-10-13 04:32:18

拼多多:最长1串的种类数的相关文章

拼多多 产品体验

一.产品是什么?(客观描述:产品是什么.产品满足的需求点 产品是啥: 拼多多是一款专注于拼团的社交购物APP 产品满足的需求点: 产品通过对接供应链的方式,以最低的价格吸引对于价格较为敏感的用户群体,同时,拼团降价的方式也满足了人们对于“占便宜”的心理需求,吸引了更多用户,加入到社交购物的行列中来. 二. 目标用户与典型使用场景(目标用户在使用该产品的典型场景,不少于3例) 案例1: 目标用户:19~25岁的在校大学生,他们没有经济来源,乐于网上购物,拼多多可以满足他们对于部分生活小物件的需求.

拼多多系统商城模式平台APP开发

拼多多系统商城模式平台APP开发(何 188.264.66502)拼多多成立于2015年9月,是一家专注于C2B拼团的第三方社交电商平台.我们认为移动价值回归商业本质.消费群体经历三个发展阶段,最初是习惯被动接受企业为他推荐的品牌,并接受企业给他提供的标准化的产品体验.到了第二个阶段的时候,消费者开始主动浏览.搜索品牌信息,此时商家对消费者提供更多是差异化的服务体验. 拼多多的模式就像在做游戏--拼团.它的概念是这样的:一个人在拼多多上选择了一件商品,要拉到足够的人购买才能成功,于是他需要分享沟

解决 PHPExcel 长数字串显示为科学计数

解决 PHPExcel 长数字串显示为科学计数 https://github.com/PHPOffice/PHPExcel/ 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. 使用PHPExcel来生成excel,也会遇到同样的问题,解决方法有三种: 1.设置单元格为文本 $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetInd

解决 PHPExcel 长数字串显示为科学计数[转]

解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. 使用PHPExcel来生成excel,也会遇到同样的问题,解决方法有三种:1.设置单元格为文本 $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()-&

拼多多商城系统开发

拼多多商城系统开发陈经理180-2406-2897(微/电)拼多多商城开发拼多多模式开发拼多多平台开发开发像拼多多那样的模式拼多多团购开发拼多多app开发拼多多网站开发 在日益趋于饱和的微信商城商场下,模板化的商城,会让商家失去活力和竞争力,每个商场的专业范畴都在更人性化的细分,更为杰出特性和差异化的商城,关于商家来说,更为重要,尤其是在当时的商场环境下.这也是这家公司可以在很多网络服务公司中脱颖而出的实质原因. 拼多多为何如此红火? 从用户和成交笔数来看,拼多多已是和唯品会规划适当的电商渠道,

PHPExcel 长数字串显示为科学计数

解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. 使用PHPExcel来生成excel,也会遇到同样的问题,解决方法有三种:1.设置单元格为文本 $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()-&

厉害了!拼多多打假打出了什么结果?

这两天注意到一条新闻,说有商家在拼多多售假,被平台扣划8万多元赔付消费者,商家不服状告拼多多后败诉.之所以会关注到这条新闻,应该是系统的兴趣推送,因为之前何玺曾有关注过拼多多. 一.拼多多打假事件始末 据媒体报道,2016年底,拼多多平台在例行抽检工作中发现,商家成都某贸易有限公司销售的品牌睫毛膏被系统判定"高度疑似假货".同月,拼多多通过"神秘买家"向成都某贸易公司在拼多多上的店铺下单购买某品牌睫毛膏,收货后录制了拆包视频,黏贴标签,并交由该品牌商标权利人鉴定,品

3亿人都在用的拼多多赢在哪?人、货、场三要素全面胜出

6月30日,拼多多向美国证券交易委员会(SEC)正式提交了招股说明书.回想仅仅3年前的这个时候,拼多多这个名字还默默无闻.谁能想到今天的它已经是拥有近3亿用户.月GMV在30亿以上的庞然大物.作为一个电商平台,从创立到拥有3亿用户,淘宝用了5年,京东走过了整整10年,而拼多多只用了3年不到!如此迅猛的增长,难免引来审视和怀疑的目光.拼多多发展到今天的地步,到底是依靠真正的创新取得领先,还是凭着游走灰色地带获取暴利?我们真的有必要深究一下. 对于拼多多这个新型的电商平台,社会上存在着截然相反的两种

前端 2018 届校招笔试面经【百度,阿里,腾讯,阿里文娱,携程,美团,拼多多】

百度 1.块级元素和行内元素的区别和举例2.HTML5的新特性3.清除浮动的方法4.BFC清除浮动的原理5.盒子模型6.标准模式和兼容模式7.闭包的定义8.原型链和作用域链9.作用域链和闭包的区别10.Object的原型对象是什么11.怎么判断一个属性是对象上的属性还是其原型对象上的属性12.判断一个对象类型为数组13.网络安全的防御14.localStorage和cookie的区别15.前端性能优化16.层叠上下文17.手写events模块18.手写将一个段落里的单词首字母都大写的函数 1.三