【发布时间】:2021-06-13 01:42:12
【问题描述】:
假设我有一个学生城市列表,它的大小可能是 100 或 1000,我想过滤掉所有重复的城市。
我想要一个通用的解决方案,可以用来从任何切片中删除所有重复的字符串。
我是 Go 语言的新手,所以我尝试通过循环并使用另一个循环函数检查元素是否存在来做到这一点。
学生城市列表(数据):
studentsCities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"}
我创建的函数,它正在发挥作用:
func contains(s []string, e string) bool {
for _, a := range s {
if a == e {
return true
}
}
return false
}
func removeDuplicates(strList []string) []string {
list := []string{}
for _, item := range strList {
fmt.Println(item)
if contains(list, item) == false {
list = append(list, item)
}
}
return list
}
我的解决方案测试
func main() {
studentsCities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"}
uniqueStudentsCities := removeDuplicates(studentsCities)
fmt.Println(uniqueStudentsCities) // Expected output [Mumbai Delhi Ahmedabad Bangalore Kolkata Pune]
}
我相信我尝试的上述解决方案不是最佳解决方案。因此,我需要你们的帮助来建议从切片中删除重复项的最快方法?
我检查了 StackOverflow,这个问题还没有被问到,所以我没有得到任何解决方案。
【问题讨论】: