尝试在仅出现一次的数组中显示整数

时间:2014-11-15 23:20:51

标签: java arrays

我有一个我创建的数组,长度为25,并在其中随机生成数字1到25.数组中几乎总是有重复数字,我想要做的就是显示数字在数组中只出现一次。到目前为止,我所拥有的代码似乎只要重复的数字重复偶数次就可以工作。我的问题是如何使这项工作成功,所以我只得到一旦添加到我的字符串中的数字。

我不能使用散列或集合或类似的东西,这是作业的一部分。

int count2 = 0;

for (int d = 0; d < copy.length-1; d++) 
{
    int num = copy[d];

    if (num != copy[d+1]) 
    {
        s = s + "," + num;
    } 
    else 
    {
        d++;
    }    
}

2 个答案:

答案 0 :(得分:1)

使用HashSet!

  1. 构造两个新的HashSets,一个用于仅出现一次的元素,另一个用于重复的
  2. 遍历您的数组
  3. 对于数组中的每个值,检查它是否已经在重复项集中。如果是这样,不做任何其他事情并继续下一次迭代
  4. 检查该值是否已出现在仅出现一次的元素集
  5. 如果不是,请添加它。如果是,请将其删除并将其添加到重复列表中
  6. 调用hashSet.toArray()然后你将拥有一个只出现一次的所有元素的数组
  7. 您可以将数组转换为字符串或按照您希望的方式使用
  8. 这种方法非常有效,因为搜索,插入和删除都是HashSet中的O(1)。

答案 1 :(得分:1)

首先,我将编写一个单独的方法来计算给定数组中值的出现次数,这样您就count value使用For-Each Loop每个private static int count(int[] arr, int value) { int count = 0; for (int item : arr) { if (item == value) { count++; } } return count; } 的出现次数public static String toUniqueString(int[] arr) { StringBuilder sb = new StringBuilder(); for (int value : arr) { if (count(arr, value) == 1) { if (sb.length() != 0) { sb.append(", "); } sb.append(value); } } return sb.toString(); } 喜欢

public static void main(String[] args) {
    Random rand = new Random();
    int[] arr = new int[25];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = rand.nextInt(arr.length) + 1;
    }
    System.out.println(toUniqueString(arr));
}

然后你可以像

那样利用它
{{1}}

最后,测试一下

{{1}}