KMP演算法從認識到優化

2021-10-08 21:36:29 字數 1228 閱讀 2632

//第一次嘗試kmp演算法

int[

] next =

newint

[pat.

length()

];next[0]

=0;char

chars = pat.

tochararray()

;int i=1;

int len=0;

while

(ilength()

)else

// if (chars[len]==chars[i])else else

// }

if(chars[len]

==chars[i]

)else

i++;//回溯找的過程,若是找到記得i++,第一次在這犯錯導致死迴圈}}

return next;

}//第二次嘗試 收穫:弄清不相等時,回溯的原理

public

static

int[

]nexttable

(string pat)

//如果當前len的前一位對應的next==0(沒有子字首),就會將len==0,就不會有鏡子效果

if(chars[j]

==chars[len]

) next[j]

=len;

}return next;

}// .......然後陣列移位方便後期直接對應找到最大公共前字尾的索引

//第三次嘗試 收穫 get到最簡版的精髓,(解決了len-1的指標溢位問題,同時將後期需要的陣列移位工作一併完成)

public

static

int[

]table

(string pat)

else

// if (len-1<=0)

len=next[len];}

return next;

}//完成最終的字串匹配

public

static

void

match

(string pat,string txt)

if(txt.

charat

(t)==pat.

charat

(p))

else}}

}

認識到三個問題

第乙個問題 非你莫屬上,去尹峰咖啡之翼調製咖啡的那個咖啡師,所說,每天幹自己喜歡幹的事情,上午調製咖啡,下午烤麵包,我感覺我不是在工作,我tm是在玩,在享受生活!所以一定要幹自己喜歡幹的事!第二個問題 找準你喜歡幹的事,把它發揮到極致,做到極致!你敢說會沒有錢賺!不可能!第三個問題 由胡祥培教授的講...

學習PHPexcel認識到的函式

1.ini set php內建在 中設定php.ini檔案中一些屬性,在函式執行的時候生效,指令碼結束後,設定失效,比如 ini set memory limit 64m memory limit 設定乙個指令碼所能夠申請到的最大記憶體位元組數,這有利於於寫的不好的指令碼消耗伺服器上的可用記憶體.代...

kmp從入門到放棄

標籤 kmp 擴充套件kmp 給你兩個字串,你需要回答,b串是否是a串的子串 a串是否包含b串 a aaaaaaaaaaaaaaaaaaaaaaaaaab b aaaaaaaab 最壞狀態 o mn 一般做法 for 列舉b在a串中的起始位置 for 向後比較ab是否相等 o n m 傳說中的kmp...