拆分出一个数组中的连续数字
来源:互联网 发布:淘宝福袋是什么意思 编辑:程序博客网 时间: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); }}