0000-9999分成四个部分 四个数相同为一部分 三个数相同为一部分 二个数相同为一部分 没有相同的为一部分
例如:6666;6667;6678;6789

解决方案 »

  1.   

    额 就像手机号码的后四位 1504505xxxx 这个xxxx就是问题 从0000-9999么 分成那四个部分
      

  2.   

    不明白lz的意思,是说从0000-9999的四位数,把它们分组,四个数字相同的分一组,三个数字相同的分一组,两个数字相同的分一组,都不同的分一组,是这样吗?int[] num = new int[]{0,0,0,0};
    List<List<String>> list = new ArrayList<List<String>>();
    for (int i=0; i<num.length; i++) {
        list.add(new ArrayList<String>());
    }
    int[] dig = new int[10];
    int max=0, idx=0;
    while (num[0] < 10) {
        Arrays.fill(dig, 0);
        max = 0;
        idx = 0;
        for (int i=0; i<num.length; i++) {
            for (int j=0; j<dig.length; j++) {
                if (j == num[i]) {
                    dig[j]++;
                    if (max < dig[j]) {
                       max = dig[j];
                       idx = j;
                    }
                    break;
                }
            }
        }
        list.get(max-1).add(Arrays.toString(num).replaceAll("\\D+", ""));
        num[num.length-1]++;
        for (int i=num.length-1; i>0; i--) {
            if (num[i] == 10) {
                num[i] = 0;
                num[i-1]++;
            }
        }
    }
    for (int i=0; i<list.size(); i++) {
        System.out.println(list.get(i));
    }其实for(int num=0; num<10000; num++)循环,把num一次取模分解出4位数字再判断也可以,为了避免不足4位的数字的判断,所以上面方法直接把num作为一个数组处理