拆分出一个数组中的连续数字

来源:互联网 发布:淘宝福袋是什么意思 编辑:程序博客网 时间:2024/06/14 05:12
//拆分一个数组中连续的数字,可以参考字符串匹配算法class Dispart{    int cnt=0;        //用于判断连续时用    int index= 0;    int[]st;    Dispart(int len){    st = new int[2*len];    }    //分配所需要拆开的数组空间的2倍,防止空间不足    void Disp(int a[])    {        int j=0,i;         lab:        for ( i=0;i< a.length; i+=cnt)        {            j = i;            cnt = 0;            while(true)            {                if (j==a.length)                    break lab;                if (a[i]+cnt==a[j])        //如果相等  例如:a[i]=1  a[j]=1   那么j++ a[j]=2 cnt++ ,cnt=1                {                        //        a[i]+cnt==a[j]继续,否则偏移cnt个                                        st[index] = a[j];                    cnt++;                    j++;                    index++;                }                else{                    st[index++] = -1;        //-1用于分隔用                    break;                }            }        }        i=0;        while(st[i]!=0)        {            if (st[i]==-1)            {                System.out.println();            }            else                System.out.print(st[i]);            i++;        }            }    }class DispartDemo{    public static void main(String []args)    {    //    Array a = new Array[10];        int []a = {1,2,4,5,7,8,9};        Dispart d = new Dispart(a.length);        d.Disp(a);       }}


原创粉丝点击