我有一个我创建的数组,长度为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++;
}
}
答案 0 :(得分:1)
使用HashSet!
这种方法非常有效,因为搜索,插入和删除都是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}}