Maison > développement back-end > Golang > Comment puis-je trouver efficacement la différence entre deux tranches de chaîne dans Go ?

Comment puis-je trouver efficacement la différence entre deux tranches de chaîne dans Go ?

Patricia Arquette
Libérer: 2024-12-09 05:27:13
original
401 Les gens l'ont consulté

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

Trouver la distinction entre les sous-ensembles de tranches de chaîne

Pour déterminer les éléments qui différencient un sous-ensemble de tranches de chaîne d'un autre, considérons le problème suivant :

<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!

Copier après la connexion

Solution

Une approche efficace pour résoudre ce problème, cela suppose que les cartes Go fonctionnent avec une complexité d'environ ~ O (1). Par conséquent, la fonction de différence suggérée fonctionne sur des tranches non triées avec une complexité approximative de ~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
}
Copier après la connexion

En utilisant une carte pour déterminer efficacement l'appartenance aux éléments, la fonction de différence identifie et isole efficacement les éléments présents. dans une tranche mais pas dans l'autre, fournissant une comparaison précise entre les sous-ensembles de tranches de chaînes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal