21 lines
No EOL
412 B
Python
21 lines
No EOL
412 B
Python
import sys
|
|
|
|
data = sys.stdin.read().split()
|
|
s, t = data[0], data[1]
|
|
m = len(t)
|
|
st = t + "#" + s
|
|
n = len(st)
|
|
z = [0] * n
|
|
l, r = 0, 0
|
|
ans = []
|
|
for i in range(1, n):
|
|
if i <= r:
|
|
z[i] = min(r - i + 1, z[i - l])
|
|
while i + z[i] < n and st[z[i]] == st[i + z[i]]:
|
|
z[i] += 1
|
|
if i + z[i] - 1 > r:
|
|
l = i
|
|
r = i + z[i] - 1
|
|
if z[i] == m:
|
|
ans.append(i - m - 1)
|
|
print(*ans) |