这个数据是部门的编号,分上下级,通过编号来区分,比如:
部门1 : 01
下级部门1 : 011
下级部门2 : 012
下下级部门1:0121
部门2 : 02
下级部门1 : 021
下下级部门1:0211
下下级部门1:0212
下下下级部门1:02121
下级部门2 : 022
下下级部门1:0221现在我要通过一系列的编号组合出最少的部门组合(存在上级部门就舍去下级部门)
比如:
01
011
02
021
022
031
0412
05
0513
0611
06112
我得出的数据应为:
01
02
031
0412
05
0611求算法。最好是java版本的。
部门1 : 01
下级部门1 : 011
下级部门2 : 012
下下级部门1:0121
部门2 : 02
下级部门1 : 021
下下级部门1:0211
下下级部门1:0212
下下下级部门1:02121
下级部门2 : 022
下下级部门1:0221现在我要通过一系列的编号组合出最少的部门组合(存在上级部门就舍去下级部门)
比如:
01
011
02
021
022
031
0412
05
0513
0611
06112
我得出的数据应为:
01
02
031
0412
05
0611求算法。最好是java版本的。
public static void main(String[] args) {
String[] array = { "01", "011", "02", "021", "022", "031", "0412",
"05", "0513", "0611", "06112" };
Arrays.sort(array);
List<String> list=new ArrayList<String>();
list.addAll(Arrays.asList(array));
int i=0;
int j=1;
for(i=0; i<array.length;i++){
for(;j<array.length;j++){
if(array[j].startsWith(array[i])){
list.remove(array[j]);
}else{
i=j-1;
j++;
break;
}
}
}
}
String[] array = { "01", "011", "02", "021", "022", "031", "0412",
"05", "0513", "0611", "06112" };
Arrays.sort(array);
List<String> list=new ArrayList<String>();
list.addAll(Arrays.asList(array));
int i=0;
int j=1;
for(i=0; i<array.length;i++){
for(;j<array.length;j++){
if(array[j].startsWith(array[i])){
list.remove(array[j]);
}else{
i=j-1;
j++;
break;
}
}
}
System.out.println(list);
}