Heim >Backend-Entwicklung >Golang >Wie kann ich den Unterschied zwischen zwei String-Slices in Go effizient finden?
Ermitteln der Unterscheidung zwischen String-Slice-Teilmengen
Um die Elemente zu ermitteln, die eine String-Slice-Teilmenge von einer anderen unterscheiden, betrachten Sie das folgende Problem:
<p>Here is my desired outcome</p> <pre class="brush:php;toolbar:false">slice1 := []string{"foo", "bar","hello"} slice2 := []string{"foo", "bar"} difference(slice1, slice2) => ["hello"]
I need to determine the disparities between these two string slice sections!
Lösung
Ein effizienter Ansatz Um dieses Problem zu lösen, wird davon ausgegangen, dass Go-Karten mit einer Komplexität von etwa ~O(1) arbeiten. Folglich arbeitet die vorgeschlagene Differenzfunktion auf unsortierten Slices mit einer ungefähren Komplexität von ~O(n).
// difference returns the elements in `a` that aren't in `b`. func difference(a, b []string) []string { mb := make(map[string]struct{}, len(b)) for _, x := range b { mb[x] = struct{}{} } var diff []string for _, x := range a { if _, found := mb[x]; !found { diff = append(diff, x) } } return diff }
Durch die Verwendung einer Karte zur effizienten Bestimmung der Elementzugehörigkeit identifiziert und isoliert die Differenzfunktion effektiv die vorhandenen Elemente in einem Slice, aber nicht im anderen, was einen genauen Vergleich zwischen String-Slice-Teilmengen ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich den Unterschied zwischen zwei String-Slices in Go effizient finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!