我下载样例看了下,p数组第一个位置不一样(运气好,那么长的数组,还能快速找到不同)
我的问题是 z[0] 不为 0 而是为 length(),两串比较时开局 i <= r 出现错误。
(r = 0 , i = 0) if (i <= r) p[i] = min(r - i + 1, z[i - l]);
当i == 0时,r == 0,两串开始不同,p[i]应为0,但是这个判断会赋值 r - i + 1 即 1