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),...}
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 }
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!