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