Mencari Perbezaan antara Dua Keping Rentetan
Apabila berurusan dengan hirisan rentetan dalam pengaturcaraan, selalunya perlu untuk menentukan perbezaan antara dua set. Pertimbangkan senario berikut:
slice1 := []string{"foo", "bar","hello"} slice2 := []string{"foo", "bar"}
Matlamat kami adalah untuk mengenal pasti dan mengeluarkan elemen yang wujud dalam slice1 tetapi tidak dalam slice2.
Menggunakan HashMap untuk Pencarian Cekap
Untuk mengira perbezaan dengan cekap, kami boleh memanfaatkan peta Go. Peta dalam Go menawarkan carian masa tetap (O(1)), yang membolehkan kami menentukan dengan cepat sama ada unsur wujud dalam set.
Pelaksanaan Fungsi perbezaan
Berikut ialah pelaksanaan fungsi perbezaan menggunakan peta:
// 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 }
Memecahkan Fungsi
Pelaksanaan ini mempunyai anggaran kerumitan masa O(n), dengan n ialah panjang maksimum slice1 dan slice2. Kecekapannya berpunca daripada operasi masa tetap yang dilakukan oleh peta, yang memastikan carian dan sisipan adalah pantas.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Elemen dalam Satu Slice Rentetan Yang Tidak Ada dalam Satu Lagi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!