#go
#Вперед
Вопрос:
у меня есть строка в golang :
«привет, привет, привет, привет»
Я хотел бы удалить дубликаты word, чтобы сохранить только один, чтобы получить это :
«привет, привет»
Ответ №1:
Для достижения этой цели существует несколько способов. Одним из них является это:
import "strings"
func Dedup(input string) string {
unique := []string{}
words := strings.Split(input, " ")
for _, word := range words {
// If we alredy have this word, skip.
if contains(unique, word) {
continue
}
unique = append(unique, word)
}
return strings.Join(unique, " ")
}
func contains(strs []string, str string) bool {
for _, s := range strs {
if s == str {
return true
}
}
return false
}
Комментарии:
1.
Dedup("high hi hi hi ho ho hello")
удаляет все экземпляры «hi» ( запустите его на игровой площадке ).2. пользователь462794 посмотрите на отредактированный код, сообщение было неверным, как прокомментировал @MuffinTop.
Ответ №2:
package main
import "fmt"
func removeDuplicates(arr []string) []string {
words_string := map[string]bool{}
for i:= range arr {
words_string[arr[i]] = true
}
desired_output := []string{} // Keep all keys from the map into a slice.
for j, _ := range words_string {
desired_output = append(desired_output, j)
}
return desired_output
}
func main() {
arr := []string{"hi", "hi", "hi", "ho", "ho", "hello"}
fmt.Println(arr)
desired_output := removeDuplicates(arr) // Remove the duplicates
fmt.Println(desired_output)
}
Комментарии:
1. Здесь только одна проблема, которую я вижу, связана с порядком извлечения. При получении конечных результатов порядок не поддерживается.