天天看点

kmp变形 如何判断第i个字符是否匹配函数 hdu 4749

题目来源:

http://acm.hdu.edu.cn/showproblem.php?pid=4749

题意: 

题意:给出两个数字串A、B。问A中有多少不相交的子串a能匹配B。匹配的意思是a中任意两个位置i和j的大小关系和B的这两个位置的大小关系是一样的。

思路:若是完全一模一样的匹配的话那么KMP是很好理解的。那么对于上述的比较方式怎么比较两个串相等呢?对于a的位置j和B的位置i(j

< i),我们比较aa(1,2 ,...j) 与bb(i - j + 1 , ... , i)这两个串中,j之前aa中小于(或

等于 或 大于)a[j] 的个数, 是否  ==   与  i之前bb中小于(或 等于 或大于) b[i]

的个数  。 

一个个匹配过去,如果前缀匹配,并且加上当前字母后,前面比这个字母小的,相等的,大于的数字个数都相等,就是匹配

代码如下: