KMP算法的C#實(shí)現(xiàn)方法
本文實(shí)例簡(jiǎn)述了KMP算法的C#實(shí)現(xiàn)方法,分享給大家供大家參考。具體如下:
具體思路為:next函數(shù)求出模式串向右滑動(dòng)位數(shù),再將模式串的str的next函數(shù)值 存入數(shù)組next。
具體實(shí)現(xiàn)代碼如下:
static void GetNextVal(string str, int [] next) { int i = 0; int j = -1; next[0] = -1; while (i < str.Length - 1) { if (j == -1 || str[i] == str[j]) { i++; j++; next[i] = j; } else { j = next[j]; } } }
KMP算法代碼如下:
static int KMP(string zstr, string mstr) { int i, j; int[] next = new int[mstr.Length]; GetNextVal(mstr, next); i = 0; j = 0; while (i < zstr.Length && j < mstr.Length) { if (j == -1 || zstr[i] == mstr[j]) { ++i; ++j; } else { j = next[j]; } } if (j == mstr.Length) return i - mstr.Length; return -1; } static void Main(string[] args) { string zstr, mstr; zstr = Console.ReadLine(); mstr = Console.ReadLine(); int pos1; pos1 = KMP(zstr, mstr); if (pos1 == -1) Console.WriteLine("沒(méi)有匹配的字符串!"); else Console.WriteLine(pos1); Console.Write("請(qǐng)按任意鍵繼續(xù)。。"); Console.ReadKey(true); } }
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- C#實(shí)現(xiàn)拼手氣紅包算法
- c# 實(shí)現(xiàn)位圖算法(BitMap)
- 經(jīng)典實(shí)例講解C#遞歸算法
- 少見(jiàn)的C# RSA算法
- C# 數(shù)獨(dú)求解算法的實(shí)現(xiàn)
- 使用C#編寫(xiě)自己的區(qū)塊鏈挖礦算法
- C#實(shí)現(xiàn)的二維數(shù)組排序算法示例
- C#實(shí)現(xiàn)簡(jiǎn)單的RSA非對(duì)稱(chēng)加密算法示例
- C#字符串自增自減算法詳解
- 同時(shí)兼容JS和C#的RSA加密解密算法詳解(對(duì)web提交的數(shù)據(jù)加密傳輸)
- C#深度優(yōu)先搜索算法
- c# 實(shí)現(xiàn)KMP算法的示例代碼
相關(guān)文章
C#窗體實(shí)現(xiàn)點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#窗體實(shí)現(xiàn)點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08c# 抓取Web網(wǎng)頁(yè)數(shù)據(jù)分析
通過(guò)程序自動(dòng)的讀取其它網(wǎng)站網(wǎng)頁(yè)顯示的信息,類(lèi)似于爬蟲(chóng)程序。比方說(shuō)我們有一個(gè)系統(tǒng),要提取BaiDu網(wǎng)站上歌曲搜索排名。分析系統(tǒng)在根據(jù)得到的數(shù)據(jù)進(jìn)行數(shù)據(jù)分析。為業(yè)務(wù)提供參考數(shù)據(jù)。2008-11-11c#集合快速排序類(lèi)實(shí)現(xiàn)代碼分享
這篇文章主要介紹了C#實(shí)現(xiàn)集合排序類(lèi),大家參考使用吧2013-12-12C#?PictureBox控件方法參數(shù)及圖片刪除重命名上傳詳解
這篇文章主要為大家介紹了C#?PictureBox控件方法參數(shù)及圖片刪除重命名上傳示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08