非常棒的信奥题解! https://blog.csdn.net/qq_44791484 https://www.cnblogs.com/newblg/p/14610243.html 鬼才想得到的解法 思路: 在验证某串a是否为b的子串时,常常使用kmp算法.当子串匹配下标j = 子串长度时,说明串a是串b的子串.如果i取到串b的最后一位时,j还没有 = a长度,说明a不是b的子串. 在这道题,我们需要构造串b,使得a不是b的子串,也就是j不能取到串a的长度.假设当前j是a的待匹配位,b的下一位构造位为i.第i位有26种取值,对于每个取值,j的下一步位置大多不同.将下一步的取值看成转化的状态的话,就能构造f[i][j]表示b构造了前i个字符,匹配了a子串的前j位.那么f[i][j] += f[i-1][k]. 因为第i个字符是需要枚举a~z的,取到a[k]后要做一次kmp匹配,求第i位可以匹配的位置. 又一个优秀的博主 https://blog.csdn.net/qq_45832461?type=blog https://www.cnblogs.com/zbsy-wwx/p/11742074.html