KMP(持續(xù)理解中...)

static void Main()
{
    Console.WriteLine(KMP("1111ababacae22", "ababacae"));
    Console.ReadLine();
}

static int KMP(String s, String t)
{
    int[] next=new int[t.Length];
    int i = 0; 
    int j = 0;
    Getnext(next,t);
    while (i < s.Length && j < t.Length)
    {
        if (j == -1 || s[i] == t[j])
        {
            i++;
            j++;
        }
        else j = next[j];   // j = next[j]握截。此舉意味著失配時余寥,接下來模式串 t 要相對于主串S向右移動j - next [j] 位   ①        
    }
    if (j >= t.Length)
        return (i - t.Length);         //匹配成功浇借,返回子串的位置
    else
        return (-1);                  //沒找到
}

// 生成最長前后綴數(shù)組
// ababacae
// -1, 0, 0, 1, 2, 3, 0, 1
static void Getnext(int[] next, String t)
{
    int j = 0;
    int k = -1;
    next[0] = -1;

    while (j < t.Length - 1)
    {
        if (k == -1 || t[j] == t[k])
        {
            j++; 
            k++;
            next[j] = k;
        }
        else
        {
            // 當(dāng)前模式串 k 位置,已經(jīng)不匹配。但 k 位置之前的子字符串中存在 next[k] 個最長前后綴省核。
            // 因此掂僵,將 k 回溯到 next[k] 處 ②
            k = next[k];  
        }
    }
}

① 的理解
可以理解為:模式串 t 的 k 位置要與主串 s 的 j 位置對齊航厚,用于比較


image.png

=>

image.png

②的理解


image.png

參考文檔
https://blog.csdn.net/yyzsir/article/details/89462339

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锰蓬,隨后出現(xiàn)的幾起案子幔睬,更是在濱河造成了極大的恐慌,老刑警劉巖芹扭,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麻顶,死亡現(xiàn)場離奇詭異,居然都是意外死亡舱卡,警方通過查閱死者的電腦和手機辅肾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轮锥,“玉大人矫钓,你說我怎么就攤上這事。” “怎么了新娜?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵赵辕,是天一觀的道長。 經(jīng)常有香客問我杯活,道長匆帚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任旁钧,我火速辦了婚禮吸重,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘歪今。我一直安慰自己嚎幸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布寄猩。 她就那樣靜靜地躺著嫉晶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪田篇。 梳的紋絲不亂的頭發(fā)上替废,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音泊柬,去河邊找鬼椎镣。 笑死,一個胖子當(dāng)著我的面吹牛兽赁,可吹牛的內(nèi)容都是我干的状答。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼刀崖,長吁一口氣:“原來是場噩夢啊……” “哼惊科!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亮钦,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤馆截,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜂莉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孙咪,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年巡语,在試婚紗的時候發(fā)現(xiàn)自己被綠了翎蹈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡男公,死狀恐怖荤堪,靈堂內(nèi)的尸體忽然破棺而出合陵,到底是詐尸還是另有隱情,我是刑警寧澤澄阳,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布拥知,位于F島的核電站,受9級特大地震影響碎赢,放射性物質(zhì)發(fā)生泄漏低剔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一肮塞、第九天 我趴在偏房一處隱蔽的房頂上張望襟齿。 院中可真熱鬧,春花似錦枕赵、人聲如沸猜欺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽开皿。三九已至,卻和暖如春篮昧,著一層夾襖步出監(jiān)牢的瞬間赋荆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工懊昨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窄潭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓疚颊,卻偏偏與公主長得像狈孔,于是被迫代替她去往敵國和親信认。 傳聞我的和親對象是個殘疾皇子材义,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容