//第一次嘗試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...