java一个数组中存放数字1和0,总共36个,要从该数组中找出0连续最多的一段,用算

如题所述

大致思路:

1,定义a,b,c3个变量,a用来计数0出现的次数,b也是用来计数0出现的次数,当a的次数大于b的次数把a的值赋值给b,这样就保留下来0出现的最大次数,c用来计算0最多字段出现的下标,

2,遍历这个数组,代码如下:

public class Demo17 {
public static void main(String[] args) {
int[] arr = { 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 };

int a = 0;
int b = 0;
int c = 0;
for(int i = 0;i<arr.length;i++) {
if(arr[i] == 0) {
a++;
if(a>=b) {
b=a;
c=i-b+1;
}

} else {
a = 0;
}
}

for(int i=c;i<b+c;i++) {
System.out.println(arr[i]);
}


}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-13
public int searchLength(){
int sum=0;
int a=0;
int arr[]={0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0};//无论多少个0或者1都可以
for(int i=0;i<arr.length-1;i++){
if(arr[i]==0&&arr[i+1]==0){//前后相比
a=a+1;
System.out.println("1");
}else{
System.out.println("2");
if(sum<a){
sum=a;
}
a=0;
}
}
return sum+1;//相比后,要加上第一个数
}
有问题问我
第2个回答  2015-10-13
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class Test1 {

/**
* @param args
*/
public static void main(String[] args) {
String[] aaa = {"0","1","0","0","1","0","0","0","0","1","0","0","0","0","0","1","0","0","0","0","0","1","0","0","0","0","0","1"} ;
StringBuffer aa = new StringBuffer();
for(String a:aaa){
aa.append(a);
}
String b = aa.toString();
int result = 0;
for(int i =aaa.length;i>0;i--){
if(b.indexOf(getStrBySize(i))!=-1){
result=i;
break;
}
}
System.out.println("最多一段0个数为"+result+"个");
}

public static String getStrBySize(int size){
StringBuffer a = new StringBuffer();
for(int i =0;i<size;i++){
a.append("0");
}
return a.toString();
}
}
相似回答