pair = bin[i - 1], bin[i]
j = heads.get(pair, -1)
while j != -1 and j - i <= MAX_DIST:
- assert bin[i] == bin[j]
- assert bin[i - 1] == bin[j - 1]
- k = 2
- while k < MAX_LEN and i - k >= 1 and bin[i - k] == bin[j - k]:
- k += 1
- if k > _len:
- _len = k
+ #assert bin[i - 1:i + 1] == bin[j - 1:j + 1]
+ if (
+ _len < MAX_LEN and
+ i - _len >= 0 and
+ bin[i - _len:i - 1] == bin[j - _len:j - 1]
+ ):
+ _len += 1
+ while (
+ _len < MAX_LEN and
+ i - _len >= 0 and
+ bin[i - _len] == bin[j - _len]
+ ):
+ _len += 1
dist = j - i
j = links[j]
lzss.append((_len, dist))