Go语言程序:去除数组中的重复元素
在本教程中,我们将学习如何编写一个Go语言程序来去除数组中的重复元素。去除重复项是指编写一个程序,删除重复多次出现的数值。
使用外部函数去除数组中的重复值
以下代码演示了如何使用用户定义函数去除数组中的重复值。
算法
步骤1 − 首先,我们需要导入fmt包。
步骤2 − 现在,创建一个名为removeDuplicate()的函数,该函数接受一个数组作为参数,并在去除所有重复项后返回一个数组。
步骤3 − 此函数使用for循环迭代数组。
步骤4 − 在这里,我们创建了一个键为整数、值为布尔值的映射,默认情况下,map_var存储的值为false。
步骤5 − 在数组的每次迭代中,我们检查map_var的值,如果为false,则取该值并将其追加到上面创建的新数组中。
步骤6 − 重复此过程,直到检查所有数组值,然后返回形成的新数组。
步骤7 − 现在,我们需要启动主函数。
步骤8 − 初始化一个整数数组arr,向其中存储值,并在屏幕上打印数组。
步骤9 − 现在,通过将上面创建的数组作为参数传递给它来调用removeDuplicate函数。
步骤10 − 将获得的结果存储在一个名为result的数组中,并在屏幕上打印该数组。
示例
package main import "fmt" // making a function named removeDuplicate() func removeDuplicate(arr [8]int) []int { map_var := map[int]bool{} result := []int{} for e := range arr { if map_var[arr[e]] != true { map_var[arr[e]] = true result = append(result, arr[e]) } } return result } func main() { arr := [8]int{1, 2, 2, 4, 4, 5, 7, 5} fmt.Println("The unsorted array entered is:", arr) result := removeDuplicate(arr) fmt.Println("The array obtained after removing the duplicate values is:", result) }
输出
The unsorted array entered is: [1 2 2 4 4 5 7 5] The array obtained after removing the duplicate values is: [1 2 4 5 7]
使用循环去除数组中的重复元素
现在让我们来看另一个示例,说明如何在不使用映射的情况下从数组中删除重复项。
算法
步骤1 − 导入fmt包,允许我们在屏幕上打印任何内容。
步骤2 − 调用main()函数。
步骤3 − 初始化并在整数数组中存储元素,并在屏幕上打印。
步骤4 − 使用for循环迭代数组,以检查当前元素是否等于下一个元素。
步骤5 − 如果两个元素相等,则使用for循环删除重复元素,并通过执行size--将数组大小减1。
步骤6 − 迭代整个数组后,使用fmt.Println()函数在屏幕上打印获得的新数组的元素。
示例
package main import "fmt" func main() { arr := []int{1, 2, 2, 4, 4, 5, 7, 5} fmt.Println("The unsorted array entered is:", arr) size := len(arr) for i := 0; i < size; i++ { for j := i + 1; j < size; j++ { if arr[i] == arr[j] { for k := j; k < size-1; k++ { arr[k] = arr[k+1] } size-- j-- } } } fmt.Println("The elements of array obtained after removing the duplicate values is:") for i := 0; i < size; i++ { fmt.Println(arr[i]) } }
输出
The unsorted array entered is: [1 2 2 4 4 5 7 5] The elements of array obtained after removing the duplicate values is: 1 2 4 5 7
使用Append()函数去除字符串数组中的重复值
在这个程序中,我们将看到如何使用Append函数()从字符串数组中删除重复值。
语法
func append(slice []Type, elems ...Type) []Type
Go语言中的append函数用于向数组切片添加元素。它可以接受多个参数。第一个是我们想要追加的数组,后面跟着我们想要追加的值。然后,该函数返回包含已添加值的新数组。
示例
package main import ( "fmt" "sort" ) func removeDuplicate(strs []string) []string { sort.Strings(strs) for i := len(strs) - 1; i > 0; i-- { if strs[i] == strs[i-1] { strs = append(strs[:i], strs[i+1:]...) } } return strs } func main() { arr := []string{"a", "b", "b", "c", "b", "d"} fmt.Println("The unsorted array entered is:", arr) result := removeDuplicate(arr) fmt.Println("The array obtained after removing the duplicate values is:", result) }
输出
The unsorted array entered is: [a b b c b d] The array obtained after removing the duplicate values is: [a b c d]
结论
我们已经成功编译并执行了一个Go语言程序,用于去除数组中的重复元素,并附带示例。