| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖
标题:求一个二进制串中连续的1或连续的0出现的最大次数
只看楼主 加入收藏
我是嘉欣
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-11-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
求一个二进制串中连续的1或连续的0出现的最大次数
求一个二进制串中连续的1或连续的0出现的最大次数。
例如:s = “11100001111100011”  则返回:5
又例如:s=”01111000”  则返回:4
搜索更多相关主题的帖子: 二进制 
2012-12-17 23:41
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:8 
正好最近看到 StringTokenizer类,据说效率比indexof高很多

程序代码:
public static void main(String[] args) {
        // TODO Auto-generated method stub
        String s="10000011110000011111111111111111100000111001";
        System.out.println(getMaxLength(s));
    }

    
    public static int getMaxLength(String s){
        StringTokenizer stk=new StringTokenizer(s, "0");
        int l=0;
        while(stk.hasMoreTokens()){
            String temp=stk.nextToken();
            l=l>temp.length()?l:temp.length();
        }
        stk=new StringTokenizer(s, "1");
        while(stk.hasMoreTokens()){
            String temp=stk.nextToken();
            l=l>temp.length()?l:temp.length();
        }
        return l;
    }


[ 本帖最后由 shellingford 于 2012-12-18 11:20 编辑 ]
2012-12-17 23:59
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:2 
看了一眼 应该是最长子序列的问题 你可以上网搜一下算法

马马虎虎 不吝赐教 我是路过蹭分滴
2012-12-18 09:15
OoDreamParty
Rank: 2
等 级:论坛游民
帖 子:10
专家分:20
注 册:2012-3-1
收藏
得分:0 
学习下
2012-12-18 11:06
我是嘉欣
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-11-29
收藏
得分:0 
我自己也做出来了,是可以运行的,但也希望大家能把它改得更好......
import
import
public class exe4 {
    public static void main(String[] args) {
        String str=null;
        int j=0,i=0,count;   
        try{
            BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
            System.out.println("请输入一串二进制数:");
            str=in.readLine();
        }catch(Exception e){}   
        int a[]=new int[str.length()];                      //定义数组array,存放每个连续数字的出现次数(数组的长度不能长于str.length())
        while(i<str.length()){                                   //当i小于二进制串的长度,就进入循环
            count=1;         //首先count应该为1
            while(str.charAt(i)==str.charAt(i+1)){                //当两个数字相同时count加1
                count++;                                          //
                i=i+1;
                if(i==str.length()-1)                              
                    break;
            }
            a[j]=count;                  //数组array存放每个连续数字的出现次数
            j++;
            i++;
        }
        int max=a[0];                           //先初始化 这个二进制串中连续的1或连续的0出现的最大次数为a[0]这个数值
        for(int n=1;n<a.length;n++){            //判断这个二进制串中连续的1或连续的0出现的最大次数
            if(a[n]>max){
                max=a[n];
            }
        }
        System.out.println("这个二进制串中连续的1或连续的0出现的最大次数为:"+max);       // 输出
    }
}
2012-12-18 19:04
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:10 
程序代码:
public static void main(String[] args) {
    String b = "10000011110000011111111111111111100000111001"; int max = 0;
    for (int i = 1, j = 1; i < b.length(); ++i)
        if (b.charAt(i - 1) == b.charAt(i))
            ++j;
        else {
            max = Math.max(max, j);
            j = 1;
        }
    System.out.println(max == 0 ? b.length() : max);
}


[ 本帖最后由 lz1091914999 于 2012-12-18 22:03 编辑 ]

My life is brilliant
2012-12-18 22:02
快速回复:求一个二进制串中连续的1或连续的0出现的最大次数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024443 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved