一个与标答不同的想法
首先,根据观察可知:如果我们从前往后匹配,当前匹配上了 s s s 的第 i i i个字符,那么下一个能匹配的一定是与当前位置 i i i的奇偶性不同的位置。
然后我们就分奇偶建立序列自动机,然后从头开始时枚举是从奇数位置开始还是偶数位置。然后按一般的序列自动机匹配方式双指针扫就可以了。
普遍的坑点(fst点)在于即使匹配上了, s s s剩下的字符个数也需要是偶数个,否则就不行(末尾字符都要删)。
然后是这种做法的正确性证明:
考虑两个奇偶性相同且字符相同的位置 i , j ( i < j ) : j 所 能 跳 转 的 位 置 , i 都 能 跳 转 , 显 然 选 择 i 更 优 。 i,j(i<j):j所能跳转的位置,i都能跳转,显然选择i更优。 i,j(i<j):j所能跳转的位置,i都能跳转,显然选择i更优。
有 关 结 尾 时 判 断 s 剩 余 字 符 的 问 题 : 有关结尾时判断s剩余字符的问题: 有关结尾时判断s剩余字符的问题: