Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Cekap Mencari Perbezaan Antara Dua Kepingan Rentetan dalam Go?

Bagaimana untuk Cekap Mencari Perbezaan Antara Dua Kepingan Rentetan dalam Go?

Patricia Arquette
Lepaskan: 2024-12-08 12:59:11
asal
668 orang telah melayarinya

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

Mencari Perbezaan Antara Dua Kepingan Rentetan

Dalam pengaturcaraan, membandingkan kandungan dua keping adalah tugas biasa. Soalan ini menumpukan pada mengenal pasti unsur-unsur yang terdapat dalam satu kepingan tetapi tidak dalam satu keping yang lain, dengan berkesan mencari "perbezaan" antara mereka.

Hasil yang diinginkan ialah menerima kepingan baharu yang mengandungi unsur unik daripada kepingan pertama yang tidak hadir pada yang kedua. Contohnya, jika slice1 mengandungi ["foo", "bar", "hello"] dan slice2 mengandungi ["foo", "bar"], perbezaannya ialah ["hello"].

Penyelesaian Lurus Menggunakan Peta

Pendekatan yang boleh dipercayai untuk menyelesaikan masalah ini melibatkan penggunaan peta. Peta dalam Go menawarkan operasi carian yang cekap, dengan kerumitan masa yang lebih kurang O(1). Begini cara kita boleh melaksanakan pendekatan ini:

// 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
}
Salin selepas log masuk

Penjelasan

Fungsi ini mengambil dua hirisan rentetan, a dan b, sebagai input. Ia membina peta, mb, yang memetakan setiap elemen b kepada struct kosong. Peta ini digunakan untuk menentukan kehadiran unsur dalam b dengan cekap dengan carian O(1).

Fungsi kemudian melelar melalui a, menyemak setiap elemen terhadap unsur yang terdapat dalam mb. Jika unsur a tidak ditemui dalam mb, ia ditambahkan pada kepingan perbezaan.

Akhir sekali, kepingan perbezaan yang mengandungi unsur unik daripada a yang tidak terdapat dalam b dikembalikan.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Perbezaan Antara Dua Kepingan Rentetan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan