字串匹配之一 Sunday演算法

2021-07-09 03:42:30 字數 887 閱讀 6177

//kmp演算法

#include #include #include using namespace std;

//實現strstr函式

//下面是使用列舉法來求解,該演算法的時間複雜度是o(m * n)

// char *my_strstr(char * father, char *son)

// return null;

// }

//實現strstr函式

//下面是kmp演算法來求解,該演算法的時間複雜度是o(m + n)

/* 有字串:bbcabcdababcdabcdabde

現在想知道該字串內是否含有:abcdabd

詳細介紹看文章:

思想:匹配失敗時,找出已經匹配的的最長字首,然後繼續從該位置開始繼續匹配,而不是跳到前面開始

引數:t,匹配文字;p, 匹配模式

*//*

對於字串s,找出每乙個位置i之前的字串的最長的字首和字尾的公共部分。

*/#include #include using namespace std;

int char_in_p_pos(const string &p, char c)

return -1;

}int next_pos(const string &t, const string &p, int t_curr_pos)

//成功找到下乙個在模板內的字元,返回下一開始匹配位置

else

}int sunday(const string &t, const string &p)

}}int main(int argc, char const *argv)

字串匹配 sunday演算法

原題 lintcode題目 字串查詢 又稱查詢子字串 是字串操作中乙個很有用的函式。你的任務是實現這個函式。對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。字串匹配最常見的就是km...

字串匹配sunday演算法

在網上看到了一種比kmp和bm演算法還快字串匹配演算法,就看了一下,並且發現一些部落格上寫的 是錯誤的,於是我也寫了乙個,leetcode上測試通過。首先對sunday演算法進行一下講解 從別的地方複製過來的,講的確實不錯 好了,sunday演算法還真的很好理解,用下面的例子來說明吧 j k t h...

字串匹配 Sunday演算法

字串匹配演算法中最先學的演算法是暴力演算法,緊接著是kmp演算法,到現在依舊沒有理解next到底是怎麼求的 尋找到了一種新的演算法 sunday演算法,比kmp演算法更快 匹配時關注匹配主串中參與匹配的最後一位字元的下一位字元。參考 include includeusing namespace st...