


Bagaimana untuk melaksanakan algoritma KMP dalam C#
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
- Tentukan tatasusunan integer bersebelahan dengan saiz panjang rentetan corak dan mulakan seterusnya[0] = -1 .
- Tentukan dua penunjuk i dan j, masing-masing dengan nilai awal 0 dan -1.
- Tentukan sama ada saya mencapai penghujung rentetan corak, jika tidak, lakukan langkah berikut:
a Jika j bersamaan dengan -1 atau aksara semasa adalah sama dengan aksara yang sepadan dengan penunjuk j, maka i dan j adalah. bergerak ke belakang pada masa yang sama, dan seterusnya[i ] = j.
b. Jika tidak, gerakkan penunjuk j ke kedudukan seterusnya[j] dan teruskan padanan. - Kembalikan jadual padanan separa yang dibina seterusnya.
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
- Tentukan dua penunjuk i dan j, menunjuk ke kedudukan permulaan rentetan dan corak teks rentetan masing-masing.
- Tentukan sama ada i dan j telah sampai ke penghujung Jika tidak, lakukan langkah berikut:
a. ke belakang pada masa yang sama.
b. Jika tidak, gerakkan penunjuk j ke kedudukan seterusnya[j] dan teruskan padanan. - Jika penunjuk j menghala ke hujung rentetan corak, ia bermakna perlawanan berjaya dan indeks kedudukan permulaan dalam rentetan teks dikembalikan.
- Jika perlawanan gagal, -1 akan dikembalikan.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Cara menulis algoritma peramalan siri masa menggunakan C# Peramalan siri masa ialah kaedah meramal arah aliran data masa hadapan dengan menganalisis data lepas. Ia mempunyai aplikasi yang luas dalam banyak bidang seperti kewangan, jualan dan ramalan cuaca. Dalam artikel ini, kami akan memperkenalkan cara menulis algoritma ramalan siri masa menggunakan C#, dengan contoh kod khusus. Penyediaan Data Sebelum melakukan peramalan siri masa, anda perlu menyediakan data terlebih dahulu. Secara umumnya, data siri masa hendaklah mempunyai panjang yang mencukupi dan disusun mengikut urutan kronologi. Anda boleh mendapatkannya daripada pangkalan data atau

Cara menggunakan C# untuk menulis algoritma pembelajaran mendalam Pengenalan: Dengan perkembangan pesat kecerdasan buatan, teknologi pembelajaran mendalam telah mencapai keputusan terobosan dalam banyak bidang. Untuk melaksanakan penulisan dan aplikasi algoritma pembelajaran mendalam, bahasa yang paling biasa digunakan pada masa ini ialah Python. Walau bagaimanapun, bagi pembangun yang lebih suka menggunakan bahasa C#, ia juga boleh digunakan untuk menggunakan C# untuk menulis algoritma pembelajaran mendalam. Artikel ini akan memperkenalkan cara menulis algoritma pembelajaran mendalam menggunakan C# dan memberikan contoh kod khusus. 1. Buat projek C# Sebelum mula menulis algoritma pembelajaran mendalam, anda perlu mencipta terlebih dahulu

Bagaimana untuk melaksanakan algoritma tamak dalam C# Algoritma tamak (Algoritma tamak) ialah kaedah penyelesaian masalah yang biasa digunakan Ia memilih penyelesaian optimum semasa setiap kali dengan harapan untuk mendapatkan penyelesaian optimum global. Dalam C#, kita boleh menggunakan algoritma tamak untuk menyelesaikan banyak masalah praktikal. Artikel ini akan memperkenalkan cara melaksanakan algoritma tamak dalam C# dan memberikan contoh kod khusus. 1. Prinsip asas algoritma tamak Idea asas algoritma tamak adalah untuk memilih penyelesaian optimum semasa setiap kali, tanpa mengira kemungkinan kesan daripada langkah-langkah berikutnya. Pemikiran begini

Cara menggunakan C# untuk menulis algoritma carian pertama-luas (Breadth-First Search, BFS) ialah algoritma carian graf yang biasa digunakan untuk melintasi graf atau pokok mengikut keluasan. Dalam artikel ini, kami akan meneroka cara menulis algoritma carian luas pertama menggunakan C# dan memberikan contoh kod konkrit. Prinsip Algoritma Prinsip asas algoritma carian breadth-first adalah bermula dari titik permulaan algoritma dan mengembangkan julat carian lapisan demi lapisan sehingga sasaran ditemui atau keseluruhan graf dilalui. Ia biasanya dilaksanakan melalui baris gilir.

Cara menulis algoritma pengekodan Huffman menggunakan C# Pengenalan: Algoritma pengekodan Huffman ialah algoritma tanpa kerugian yang digunakan untuk pemampatan data. Semasa penghantaran atau penyimpanan data, data dimampatkan dengan berkesan dengan menggunakan kod yang lebih pendek untuk aksara yang lebih kerap dan kod yang lebih panjang untuk aksara yang kurang kerap. Artikel ini akan memperkenalkan cara menggunakan C# untuk menulis algoritma pengekodan Huffman dan memberikan contoh kod khusus. Prinsip asas algoritma pengekodan Huffman Idea teras algoritma pengekodan Huffman adalah untuk membina pokok Huffman. Pertama, dengan mengira kekerapan kejadian watak, yang

Cara menulis algoritma analisis kelompok menggunakan C# 1. Gambaran Keseluruhan Analisis kelompok ialah kaedah analisis data yang memisahkan titik data yang tidak serupa antara satu sama lain dengan mengumpulkan titik data yang serupa ke dalam kelompok. Dalam bidang pembelajaran mesin dan perlombongan data, analisis kelompok biasanya digunakan untuk membina pengelas, meneroka struktur data dan mendedahkan corak tersembunyi. Artikel ini akan memperkenalkan cara menggunakan C# untuk menulis algoritma analisis kelompok. Kami akan menggunakan algoritma K-means sebagai contoh algoritma dan memberikan contoh kod khusus. 2. Pengenalan kepada algoritma K-means Algoritma K-means adalah yang paling biasa digunakan

Cara menggunakan C# untuk menulis algoritma pengisihan cepat Algoritma pengisihan yang cekap Ideanya adalah untuk membahagikan tatasusunan kepada sub-masalah yang lebih kecil melalui idea membahagi dan menakluki, kemudian menyelesaikan sub-masalah ini. masalah secara rekursif, dan akhirnya menggabungkannya untuk mendapatkan jawapan kepada keseluruhan masalah. Di bawah ini kami akan memperkenalkan secara terperinci cara menggunakan C# untuk menulis algoritma isihan pantas dan memberikan contoh kod yang berkaitan. Idea Algoritma Idea pengisihan pantas boleh diringkaskan kepada tiga langkah berikut: pilih elemen penanda aras, secara amnya elemen pertama tatasusunan;

Cara menggunakan C# untuk menulis algoritma pepohon rentang minimum Algoritma pepohon rentang minimum ialah algoritma teori graf yang penting, yang digunakan untuk menyelesaikan masalah ketersambungan graf. Dalam sains komputer, pokok rentang minimum merujuk kepada pokok rentang bagi graf bersambung di mana jumlah pemberat semua tepi pokok rentang adalah yang terkecil. Artikel ini akan memperkenalkan cara menggunakan C# untuk menulis algoritma pepohon rentang minimum dan memberikan contoh kod khusus. Pertama, kita perlu mentakrifkan struktur data graf untuk mewakili masalah. Dalam C#, anda boleh menggunakan matriks bersebelahan untuk mewakili graf. Matriks bersebelahan ialah tatasusunan dua dimensi di mana setiap elemen mewakili
