Heim > Backend-Entwicklung > Golang > Wie kann ich den Unterschied zwischen zwei String-Slices in Go effizient finden?

Wie kann ich den Unterschied zwischen zwei String-Slices in Go effizient finden?

Patricia Arquette
Freigeben: 2024-12-09 05:27:13
Original
401 Leute haben es durchsucht

How Can I Efficiently Find the Difference Between Two String Slices in Go?

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!

Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage