字符串算法小总结

Extended Knuth-Morris-Pratt Algorithm

模板

  • 参数调整:MAXN是字符串的理论最大长度
  • 调用:exKMP_getextend(char* 母串,char* 模式串),会同时处理好next数组和extend数组,数据间无需初始化。
  • exKMP_next[i]表示模式串mode[i~(len-1)]与整个模式串的最长公共前缀长度
  • exKMP_extend[i]表示母串str[i~(len-1)]于整个模式串的最长公共前缀长度

题目

HDU 4300 Clairewd’s message

Aho-Corasick Automaton

模板

  • 参数调整:
    • SP:字符集大小
    • MAXN:理论上Tire树的节点上限
    • mark():用来将字符映射到SP规定的字符集大小内的函数
    • ACA_match():需要按照题目要求更改匹配时行为
  • 调用:
    • 初始化:init()
    • 插入模式串:insert()
    • 构建fail指针:ACA_buildfail()
    • 匹配母串:ACA_match()
  • 活用注记:
    • root表示没有匹配到任何字符,如果超出字符集,也要转移到root
    • 每一个节点的fail指针对应节点是等价的更早状态(包括root状态)
    • 每个节点指向失配的出边实际上指向的是其fail指针对应状态中对应出边指向的状态

题目

[Pending]

Suffix Automaton

模板1~指针实现,动态分配内存

模板2~数组实现,支持删除后缀

 

Leave a Reply

Scroll to top