【问题标题】:Issue with forming logic形成逻辑的问题
【发布时间】:2015-09-04 13:36:45
【问题描述】:

示例。 1:

第 1 步:原始样本 i/p 编号:
621
629
6201
6202
6200
623
622
6289
6274
6271
6270
628887
62870
第625章

第 2 步:排序编号:这些应该像这组数字一样排序(在考虑作为字符串集的基础上,我得到了如下所示的预期结果):

我的要求是基于字符串/而不是基于数学公式的排序..

所以对我来说,java Arraysort 在这里可以正常工作以获得预期的输出。

字符串无效[] = {"621","629","6201","6202","6200","623","622","6289","6274","6271","6270", "628887","62870","625"};
Arrays.sort(无效);

已排序的 i/p 编号:

6200
6201
6202
621
622
623
625
6270
6271
6274
62870
628887
6289
第629章

**STEP 3 : 这是我长期坚持的步骤..

以下是我期望在步骤 2 中提到的数字列表的最终结果中的一组输出数字**

计算基础不是基于数学计算方法,所以我需要在预期输出的基础上构建逻辑。

我需要考虑当前考虑的数字的前一个数字和下一个数字,并且需要在输出列表中添加预期的数字。还需要考虑数字长度和第“n”位的数字才能找到下一个数字。

分析输出结果后可以得到想法。
预期的o/p数:

0
1
2
3
4
5
60
61
6203
6204
6205
6206
6207
6208
6209
624
626
6272
6273
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
62871
62872
62873
62874
62875
62876
62877
62878
62879
62880
62881
62882
62883
62884
62885
62886
62887
628880
628881
628882
628883
628884
628885
628886
628888
628889
62889
63
64
65
66
67
68
69
7
8
9

这是我尝试获得第 2 步中提到的结果: 它工作正常.. 现在这个输出将作为 STEP 3 程序的输入,以获得前面提到的最终输出。

public static void main(String[] args) {

    // TODO Auto-generated method stub
    //System.out.println("Hello");

    String invalid[] = {"621","629","6201","6202","6200","623","622","6289","6274","6271","6270","628887","62870","625"};
    Arrays.sort(invalid);

    for(int i=0;i<invalid.length;i++) {
        System.out.println(invalid[i]);
    }

    SortInvalidLevels obj1 = new SortInvalidLevels();
}

【问题讨论】:

  • 你的尝试在哪里?
  • 所以你想对数字进行排序,使 62** 在 63 之前?
  • 是的.. 我的要求是先按级别排序,然后应用数学公式在需要的地方按升序排序。如果我的输入是 那么输出应该是
  • 假设我的输入数字集 wd 是 然后输出集 wd 是这样的
  • 主要基础/技巧是 0 到 9 个数字,又包含 0 到 9 个子级别,同样直到第 n 个数字级别。例如0 可以这样写 但它包含所有子级别,因此只写为 0(假设它包含 0 到 9 的范围)。同样适用于所有“n”位长度的数字。

标签: java arrays sorting logic


【解决方案1】:

你可以给你一个 LinkedList。使用此类的 iterator() 方法返回的 ListIterator,您可以访问上一个和下一个元素,并在交互时添加新元素。 请参阅 ListIterator 和 LinkedList 类。

【讨论】:

    【解决方案2】:

    这是您想要达到的目标吗?

    Integer[] numbers = {2, 6, 62, 6255, 63, 9, 1, 12};
    Arrays.sort(numbers, new Comparator<Integer>() {
         @Override
         public int compare(Integer o1, Integer o2) {
             return Integer.toString(o1).compareTo(Integer.toString(o1));
         }
    });
    

    输出:

    [1, 12, 2, 6, 62, 6255, 63, 9]
    

    以后,请发布您尝试过的代码。

    【讨论】:

    • 是的,直到第 2 步是正确的输出,这个输出应该作为第 3 步程序的输入以获得最终输出。
    • 我没有看到我的输出与步骤 3 中的输出有什么区别
    • 在您的输入中,您不应同时包含 1 和 12。因为如果存在 1,则意味着 1 包含所有级别 ..,因此不应包含 12您的输入列表。
    • 如果您的输入是 {2,6255, 63,9,12} 则输出数字集将是 {0,10,11,13,14,15,16,17,18,19 ,3,4,5,60,61,620,621,623,624,6250,6251,6252,6253,6254,6256,6257,6258,6259,626,627,628,629,64,65,66,67,68,69,7 和 8}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多