Cara melaksanakan algoritma KMP dalam C#
Algoritma KMP (Knuth-Morris-Pratt) ialah algoritma pemadanan rentetan yang cekap digunakan untuk mencari kedudukan rentetan corak dalam rentetan teks. Idea terasnya ialah menggunakan maklumat separa yang telah dipadankan untuk mengelakkan perbandingan yang tidak perlu.
Kunci untuk melaksanakan algoritma KMP ialah membina jadual padanan separa (Jadual Padanan Separa), juga dipanggil tatasusunan seterusnya. Tatasusunan ini merekodkan panjang subrentetan akhiran padanan terpanjang untuk setiap subrentetan awalan dalam rentetan corak.
Berikut ialah langkah dan contoh kod khusus untuk melaksanakan algoritma KMP dalam C#:
Langkah 1: Bina jadual padanan separa
Berikut ialah kod cara melaksanakan langkah di atas:
private int[] BuildNext(string pattern) { int[] next = new int[pattern.Length]; next[0] = -1; int i = 0, j = -1; while (i < pattern.Length - 1) { if (j == -1 || pattern[i] == pattern[j]) { i++; j++; next[i] = j; } else { j = next[j]; } } return next; }
Langkah 2: Gunakan jadual padanan separa untuk memadankan
Berikut ialah kod cara melaksanakan langkah di atas:
private int KMP(string text, string pattern) { int[] next = BuildNext(pattern); int i = 0, j = 0; while (i < text.Length && j < pattern.Length) { if (j == -1 || text[i] == pattern[j]) { i++; j++; } else { j = next[j]; } } if (j == pattern.Length) { return i - j; } return -1; }
Dengan memanggil kaedah KMP dan menghantar rentetan teks dan rentetan corak, anda boleh mendapatkan hasil yang sepadan.
Di atas adalah langkah dan contoh kod tentang cara melaksanakan algoritma KMP dalam C#. Dengan menggunakan jadual padanan separa, algoritma KMP boleh meningkatkan kecekapan padanan rentetan dengan berkesan, terutamanya apabila memproses rentetan teks besar dan rentetan corak panjang, dengan prestasi yang lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan algoritma KMP dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!