求助KMP

学术版

ningago @ 2022-06-12 13:30:19

RT。匹配时如何特判一个”特殊字符“使得”特殊字符“匹配任何字符都合法。

比如下面的?

T:112?34?33 S:233

____^___^__箭头指的是匹配的位置


by yukimianyan @ 2022-06-12 13:31:24

不跳 fail 直接匹配?


by __qlzxlyc41__ @ 2022-06-12 13:37:24

@ningago 直接过呗


by irris @ 2022-06-12 13:42:16

@qlzxlyc41 那么匹配其他的字符时跳 fail 怎么跳,这货还有多种可能。这个样例太弱了。


by FreshP_0325 @ 2022-06-12 14:08:21

@ningago 不能做


by FreshP_0325 @ 2022-06-12 14:10:12

a?caba?a

这个样例可以自己去手模一下,会发现在处理 nxt[4] 的时候 a 匹配上了一个 c

原因是你直接建转移边之前的位置在动,边的意义不定

并且我怀疑这个东西复杂度也有问题

如果非要做可以看这个 https://www.luogu.com.cn/problem/P4173


by FreshP_0325 @ 2022-06-12 14:12:12

呃,这个东西没法儿构匹配函数,大概是这么个意思吧!


by hly1204 @ 2022-06-12 15:15:15

自动机应该可以,改几个转移边,因为 KMP 算法是基于自动机改造而成的。https://loj.ac/s/952302


|