//拆分一个数组中连续的数字,可以参考字符串匹配算法
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);
}
}
拆分出一个数组中的连续数字
最新推荐文章于 2023-04-22 17:30:29 发布