方法一:
定義一個新切片(數組),存放原數組的第一個元素,然后將新切片(數組)與原切片(數組)的元素一一對比,如果不同則存放在新切片(數組)中。
package main
import "fmt"
func main() {
var arr = []string{"hello", "hi", "world", "hi", "china", "hello", "hi"}
fmt.Println(RemoveRepeatedElement(arr))
}
func RemoveRepeatedElement(arr []string) (newArr []string) {
newArr = make([]string, 0)
for i := 0; i < len(arr); i++ {
repeat := false
for j := i + 1; j < len(arr); j++ {
if arr[i] == arr[j] {
repeat = true
break
}
}
if !repeat {
newArr = append(newArr, arr[i])
}
}
return
}
方法二:
先將原切片(數組)進行排序,在將相鄰的元素進行比較,如果不同則存放在新切片(數組)中。
package main
import "fmt"
func main() {
var arr = []string{"hello", "hi", "world", "hi", "china", "hello", "hi"}
fmt.Println(RemoveRepeatedElement(arr))
}
func RemoveRepeatedElement(arr []string) (newArr []string) {
newArr = make([]string, 0)
sort.Strings(arr)
for i := 0; i < len(arr); i++ {
repeat := false
for j := i + 1; j < len(arr); j++ {
if arr[i] == arr[j] {
repeat = true
break
}
}
if !repeat {
newArr = append(newArr, arr[i])
}
}
return
}
上面兩種方法,第一種的效率要高於第二種的。可以通過測試比較大的數組來觀察兩種的執行速度