输入一个二进制串0111000111100 打印出1或者0出现最大次数  比如结果为 4;
来个实现

解决方案 »

  1.   

    public static void main(String[] args) {
    String s = "0111000111100";
    char[] c = s.toCharArray();
    int num = 1;
    int max = 1;
    for (int i = 1; i < c.length; i++) {
    if (c[i] == c[i - 1]) {
    num++;
    } else {
    max = Math.max(max, num);
    num = 1;
    }
    }
    System.out.println(max);
    }
      

  2.   


    public class Find01
    {
    public static void main(String[] args)
    {
    String str="0111000111100";
    String str1=str.replaceAll("11*"," ");
    String str2=str.replaceAll("00*"," ");
    String[] s0=str1.split(" ");
    String[] s1=str2.split(" ");
    int num0=0;
    int num1=0;
    for(int i=0;i<s0.length;i++)
    {
    if(num0<s0[i].length())
    {
    num0=s0[i].length();
    }
    }
    System.out.println("num0 is  "+num0);
    for(int i=0;i<s1.length;i++)
    {
    if(num1<s1[i].length())
    {
    num1=s1[i].length();
    }
    }
    System.out.println("num1 is  "+num1);

    }
    }
      

  3.   

    貌似这样也是可以的。
    package com.fenghua;public class FindZeroOne {
    /**
     * 此方法为仅有两个字符(可多次出现)返回出现次数最多的字符的次数
     * @param str
     * @return
     */
    public static int max01(String str){
    int b1=1;
    int a1=0;
    char[] a=str.toCharArray();
    for(int i=0;i<a.length-1;i++){
    if(a[i]==a[i+1]){
    b1++;
    }else{
    a1=a1+b1;
    b1=a1-b1;
    a1=a1-b1;
    b1++;
    }
    }
    return Math.max(a1, b1);
    }
    public static void main(String[] args){
    String str="01010101000000000111111";
    System.out.println(max01(str));
    }}