Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menjana Semua Kata Laluan Aksara N yang Berkemungkinan dengan Cekap dalam Go?

Bagaimanakah Saya Boleh Menjana Semua Kata Laluan Aksara N yang Berkemungkinan dengan Cekap dalam Go?

Barbara Streisand
Lepaskan: 2024-11-23 06:57:11
asal
385 orang telah melayarinya

How Can I Efficiently Generate All Possible N-Character Passwords in Go?

Penjanaan Kata Laluan Aksara n Berulang dalam Go

Dalam latihan pemecahan kata laluan, adalah penting untuk menjana semua kata laluan aksara n yang mungkin menggunakan set aksara yang ditentukan. Berikut ialah penyelesaian yang cekap dalam Go:

Menggunakan produk n-ary Cartesian, kami boleh membina kata laluan aksara n secara berulang. Contohnya, mencipta kata laluan 2 aksara daripada 'ABCDE':

Prod({A,B,C,D,E},{A,B,C,D,E}) = {(A,A),(A,B),(A,C),(A,D),(A,E),(B,A),(B,B),(B,C),(B,D),(B,E),...}
Salin selepas log masuk
func NAryProduct(input string, n int) []string {
    if n <= 0 {
        return nil
    }

    prod := make([]string, len(input))
    for i, char := range input {
        prod[i] = string(char)
    }

    for i := 1; i < n; i++ {
        next := make([]string, 0, len(input)*len(prod))
        for _, word := range prod {
            for _, char := range input {
                next = append(next, word+string(char))
            }
        }
        prod = next
    }

    return prod
}
Salin selepas log masuk

Dengan menggunakan kaedah ini secara rekursif, anda boleh menjana variasi kata laluan untuk sebarang set aksara dan panjang kata laluan. Pendekatan berulang ini memastikan penggunaan memori kekal rendah dan semua kata laluan yang berpotensi dikira dengan cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Semua Kata Laluan Aksara N yang Berkemungkinan dengan Cekap 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