java中排序的四種方式 kmp算法什么意思?
kmp算法什么意思?KMP算法之所以被稱為KMP算法,是因為這個算法是由三個人提出的,取三個人名字的首字母作為算法的名字。實際上,KMP算法與BF算法的區別在于,KMP算法巧妙地消除了指針I的回溯問題
kmp算法什么意思?
KMP算法之所以被稱為KMP算法,是因為這個算法是由三個人提出的,取三個人名字的首字母作為算法的名字。實際上,KMP算法與BF算法的區別在于,KMP算法巧妙地消除了指針I的回溯問題,只需確定下一個匹配J的位置,將問題的復雜度從O(MN)降低到O(MN)。在KMP算法中,為了在匹配失敗時確定J在下一次匹配中的位置,引入了next[]數組。next[J]的值表示P[0]中最長后綴的長度。。。J-1]等于相同字符序列的前綴。next[]數組的定義如下:1)next[J]=-1,J=0.2)next[J]=max(k):0<K<J P[0。。。K-1]=P[J-K,J-1]3)next[J]=0,例如:P a B a J 0.12.34 next-1.001 2,即next[J]=K>0時,表示P[0。。。K-1]=P[J-K,J-1]。因此,KMP算法的思想是:在匹配過程中,如果存在不匹配,如果next[J]>=0,則目標字符串的指針I不變,模式字符串的指針J移到next[J]的位置繼續匹配;如果next[J]=-1,則I移到右邊,將j設置為0以繼續比較。
串的應用kmp算法。求一個字符串在另一個字符串中第一次出現的位置?
KMP.java文件源代碼是:package算法.kmp/***Java實現示例,KMP算法測試與分析*@作者崔衛兵*@日期2009-3-25*/公共類KMP{/**)對子串進行預處理,在匹配失敗時找到子串回退的位置*在匹配失敗時找到最合適的回退位置,而不是回退到子串的第一個字符,提高了搜索效率因此,為了找到這個合適的位置,我們首先對子串進行預處理,得到一個后備位置數組*@param B,char array of substring to be found*@return*/public static int[]preprocess(char[]B){int size=B.lengthint[]P=New int[size]P[0]=0int J=0//每次循環,您都會為(int i=1I
)找到一個后備位置,它一定會很慢,而且在紙上很輕。更不用說大工廠了,它們可能比不上許多學習氛圍較好的中小企業。只有做商業項目才能了解用戶的需求,只有把技術應用到實踐中才能知道突破點在哪里。
閉門造車只是原地踏步。如果它是一個主編碼器,它可能仍然工作。但說到中高級,不僅僅是寫代碼。之后,您需要了解設計模式、跨部門溝通,甚至在甲方提出需求時挖掘潛在需求。這樣,你就不需要整天改變需求。
那么,如果我們想深入技術領域,除了建筑師,還有流行的人工智能行業。這是一條新的先進路線。許多人說學習人工智能意味著改變職業。事實上,不是。我以前的目標是成為一名建筑師。后來,我從坑里出來了。
人工智能的核心是算法。算法是一個智能程序。我們從事項目開發。我覺得這是我們技術的另一個方向。
你知道我為什么有時間在頭條和問答上和你聊天嗎?因為當我訓練模型時,我可以自由移動。建立一個模型需要幾百行代碼,然后我只看一下計算機訓練模型。
如果你想向這個方向發展,你可以私下和我談談。我來告訴你我著陸的經驗
1。寫一個KMP算法;
2。使用支持字節字符串的正則表達式引擎;