Golang程序 从两个数组中找到共同元素
在本教程中,我们将看到如何编写一个Go语言程序来寻找两个数组中的共同元素。在本文中,我们将编写两个程序。在第一个程序中,我们将使用字符串阵列,而在第二个程序中,我们将使用整数阵列。
方法1:使用Append()函数
下面的代码说明了我们如何使用go编程语言中的外部函数在两个不同的字符串数组中找到共同元素。我们将创建的这个函数将两个数组作为参数,并返回包含两个数组中共同元素的最终数组。
算法
第1步 - 导入fmt包。
第 2 步 – 定义一个名为intersection()的函数,接受两个数组作为参数,并返回结果数组作为函数的输出。
第 3 步 – 创建一个名为out的字符串空数组和一个名为bucket的地图。
第 4 步 – 使用for循环遍历这两个数组,并检查一个数组的当前元素是否等于另一个数组的元素。
第5 步 – 重复上述过程,直到整个数组都被检查完,并返回最终值。
第6 步 – 启动main()函数。
第 7 步 – 初始化两个字符串数组,并为其存储数值,在屏幕上打印这两个数组。
第 8 步 – 调用intersection()函数,将两个数组作为参数传给函数,并将最终结果存储在一个不同的变量中。
第 9 步 – 这个变量包含有共同元素的数组。
第 10 步 – 使用fmt.Println()函数在屏幕上打印结果。
例子
使用外部函数从两个字符串数组中找到共同元素的Golang程序
package main
import "fmt"
// function to get common elements 2. Golang Program to find the common elements from two arrays
func intersection(arr1, arr2 []string) []string {
out := []string{}
bucket := map[string]bool{}
for _, i := range arr1 {
for _, j := range arr2 {
if i == j && !bucket[i] {
out = append(out, i)
bucket[i] = true
}
}
}
return out
}
func main() {
arr1 := []string{"apple", "mango", "banana", "papaya"}
fmt.Println("The first array entered is:", arr1)
arr2 := []string{"cherry", "papaya", "mango"}
fmt.Println("The second array entered is:", arr2)
result := intersection(arr1, arr2)
fmt.Println()
fmt.Println("The common elements of the above two arrays are:", result)
}
输出
The first array entered is: [apple mango banana papaya]
The second array entered is: [cherry papaya mango]
The common elements of the above two arrays are: [mango papaya]
方法2:使用映射法
下面的代码说明了我们如何使用go编程语言中的外部函数找到两个不同的整数数组中的共同元素。我们将创建的这个函数将两个数组作为参数,并返回包含两个数组中共同元素的最终数组。
算法
第1步 - 导入fmt包。
第 2 步 – 定义一个名为intersection()的函数,接受两个数组作为参数,并返回结果数组作为函数的输出。
第 3 步 – 创建一个名为m的地图,键为整数,值为布尔运算。
第 4 步 – 使用for循环遍历数组并将其值存储到map中。
第 5 步 – 现在,使用另一个for循环来迭代第二个数组,如果数组的当前元素等于map,那么就把这个元素存储到一个新的数组中。
第6 步 – 重复上述过程,直到整个数组都被检查完,并返回最后的数组。
第7 步 – 启动main()函数。
第 8 步 – 初始化两个整数数组,并向它们存储数值,在屏幕上打印这两个数组。
第 9 步 – 调用intersection()函数,将两个数组作为参数传给函数,并将得到的最终结果存储在一个不同的变量中。
第10 步 – 这个变量包含有共同元素的数组。
第 11 步 – 使用fmt.Println()函数在屏幕上打印结果。
例子
使用外部函数从两个整数数组中找到共同元素的Golang程序
package main
import (
"fmt"
)
// creating an Intersection function
func intersection(a, b []int) (c []int) {
m := make(map[int]bool)
for _, item := range a {
// storing value to the map
m[item] = true
}
for _, item := range b {
if _, ok := m[item]; ok {
c = append(c, item)
}
}
return c
}
func main() {
arr1 := []int{10, 25, 34, 56, 69}
fmt.Println("The first array entered is:", arr1)
arr2 := []int{34, 69, 54, 44}
fmt.Println("The second array entered is:", arr2)
fmt.Println()
result := intersection(arr1, arr2)
fmt.Println("The common elements of the above two arrays are:", result)
}
输出
The first array entered is: [10 25 34 56 69]
The second array entered is: [34 69 54 44]
The common elements of the above two arrays are: [34 69]
总结
我们已经成功地编译并执行了一个Go语言程序,以寻找两个数组的共同元素,并附有实例。我们在此做了两个程序。第一个程序使用一个字符串数组,而第二个程序使用一个整数数组来实现其结果。