我覺得寫出一篇能夠看一遍就能理解kmp的部落格是很難的,理解這個演算法是需要時間和能力的,所以我就不不自量力的去嘗試了,所以我就談一談我認為kmp學習中比較難理解的點和比較重要的點。建議學習過kmp但還是有疑惑的同學看。
我們看next陣列
上一張吧,我現在箭頭指向的是我現在要求第i為的next值,而0..i-1的next值都求過了。
先看next[i-1]
假設兩段紅色的相等,然後我們比較第i位和第next[i-1]+1位,如果相等,那麼皆大歡喜,不然的話,這個next[i-1]就變成了next[next[i-1]],為什麼呢。
看圖
這個綠色的是next[next[i-1]],然後綠色的這一圈和藍色的這一圈是相等的,因為他們都和紅色的相等。那麼我們只有比較第一段綠色的後一位和第i位就行了。如果還是不匹配的話,就再next一次。
同理,kmp中的匹配過程也就和這個一樣了。
希望能夠有所幫助
想的多一點,想得少一點和想的大一點和,想的小一點
前幾天在江西的鯊魚回來了,公司整體開了個會,以來是歡迎這位coo的回歸,雖然我真的很不清楚coo是幹嘛的,但是目前了解到他的作用是管理客服和負責員工交流不暢的時候找他報告他來交流,別問我為什麼會知道後面這個職責,因為我和公司的ui鬧過彆扭,直接告到了boss那,然後鯊魚來交流了。哦對了,客服是我們b...
學習 How to study 想的多一點
學習 how to study 想的多一點 學習,學習,學習是我們一直都在做的事情。從小到大,從小學到大學,或許只要我們只要還在學堂,總有父母對子女說 在學校,要好聽老師的話,好好讀書。離開了學校,或許我們要學的的更多,學會如何人際交往 人脈 學會如何自學 能力 學會如何抓住更多的資源 資源 學習的...
KMP演算法的一點學習筆記
假設各位不會什麼字串雜湊 對於子串查詢這類問題,如果我單純詢問乙個字串s1中出現了多少次s2,暴力方法很好想,直接固定起點向後列舉,如果在跳到長度為s2之前就出現不同點,那麼這個起點就不行,起點向右挪一位,重複這個操作直到跑到 s2 s1 1 的位置。但這個演算法的複雜度非常高,最高可達到o nm ...