序列自动机模板
目录
算法背景
子序列的匹配,当然如果只是少量的模式串,直接使用双指针进行模拟即可,如果遇到大量模式串需要进行匹配,那么可以为主串维护一个DFA,对每一个模式串匹配时间复杂度都是O(n)
.
算法的大致思想是为每一个主串的字符节点创建一个下一个字符的索引节点,方便状态快速转换。
算法模板
/**
* 初态是 0
*/
void init() {
int nxt[MAX_N + 1][27];
int strLen = s.length();
for (int i = 0; i <= 25; i++) nxt[strLen][i] = -1;
for (int i = s.length(); i; i--) {
for (int j = 0; j < 26; j++) nxt[i - 1][j] = nxt[i][j];
nxt[i - 1][s[i - 1] - 'a'] = i;
}
}
本文由「黄阿信」创作,创作不易,请多支持。
如果您觉得本文写得不错,那就点一下「赞赏」请我喝杯咖啡~
商业转载请联系作者获得授权,非商业转载请附上原文出处及本链接。
关注公众号,获取最新动态!
历史评论
开始评论