mikhail_dvorkin icon

KMP

mikhail_dvorkin | PRO | 10/15/16 08:11:05 AM UTC | 0 ⭐ | 921 👁️ | Never ⏰ | []
text |

300 B

|

None

|

0 👍

/

0 👎

int n = s.length();
int[] p = new int[n + 1];
p[0] = -1;
for (int i = 0; i < n; i++) {
	int k = p[i];
	char c = s.charAt(i);
	while ((k >= 0) && (s.charAt(k) != c)) {
		k = p[k];
	}
	p[i + 1] = k + 1;
}
 p = [-1]
k = -1
for c in s:
	while k >= 0 and s[k] != c:
		k = p[k]
	k += 1
	p.append(k)

Comments