编写一个java函数 int same_set(int a[],int b[],int len), 该函数检查相等长度的两个数组是否包含相同的元素,若包含相同的元素, 则返回1,否则返回0,其中参数len是数组a与与数组b的元素个数。 不考虑元素的顺序,如果元素重复,重复次数也相同。在main函数中读入两个整数数组,测试该函数。 【输入形式】 从键盘输入两个数组,第一行输入数组元素个数,第二行输入第一个数组的各个值, 第三行输入第二个数组的各个值。 【输出形式】 如果两个数组包含的元素相同,打印1,否则,打印0。
时间: 2023-06-10 19:04:18 浏览: 167
好的,我可以解答您的问题。以下是Java函数int same_set(int a[],int b[],int len)的代码实现:
```java
public static int same_set(int a[], int b[], int len) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
// 将第一个数组中的元素加入map中
for(int i = 0; i < len; i++) {
if(!map.containsKey(a[i])) {
map.put(a[i], 1);
} else {
map.put(a[i], map.get(a[i]) + 1);
}
}
// 检查第二个数组中的元素是否也在map中出现过
for(int i = 0; i < len; i++) {
if(!map.containsKey(b[i])) {
return 0;
} else if(map.get(b[i]) == 0) {
return 0;
} else {
map.put(b[i], map.get(b[i]) - 1);
}
}
return 1;
}
```
该函数首先创建了一个新的HashMap用于存储第一个数组中的元素及出现次数。接着,它遍历第一个数组,将每个元素加入到HashMap中,并增加其出现次数。然后,它遍历第二个数组,并检查每个元素是否也出现在HashMap中,如果出现则将其出现次数减一,如果出现次数为0则说明元素已经全部匹配过,因此可以返回0。最后,如果未发现不匹配的元素,则说明两个数组的元素包含相同的元素,因此返回1。
在main函数中,您可以使用Scanner读入两个数组并调用same_set函数来测试该函数,如下所示:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取第一个数组
int len = scanner.nextInt();
int[] a = new int[len];
for(int i = 0; i < len; i++) {
a[i] = scanner.nextInt();
}
// 读取第二个数组
int[] b = new int[len];
for(int i = 0; i < len; i++) {
b[i] = scanner.nextInt();
}
// 调用same_set函数并打印结果
System.out.println(same_set(a, b, len));
}
}
```
希望我的解答能够帮助到您。如果您还有其他问题,不要犹豫,随时问我。
阅读全文