From 4fcd9912d75ecdd601080978eb1af60d3fe1bd48 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Sun, 5 Jan 2020 22:10:53 +0100
Subject: [PATCH] String: Bug fixes

---
 08-string/string.tex | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/08-string/string.tex b/08-string/string.tex
index aa74aaf..b92156c 100644
--- a/08-string/string.tex
+++ b/08-string/string.tex
@@ -96,13 +96,16 @@ where $\LCP(\gamma,\delta)$ is the maximum~$k$ such that $\gamma[{}:k] = \delta[
 \obs{The LCP array can be easily used to find the longest common prefix of any two
 suffixes $\alpha[i:{}]$ and $\alpha[j:{}]$. We use the rank array to locate them
 in the lexicographic order of all suffixes: they lie at positions
-$i' = R[i]$ and $j' = R[j]$. Then we compute $k = \min(L[i'], L[i'+1], \ldots, L[j'-1])$.
+$i' = R[i]$ and $j' = R[j]$ (w.l.o.g. $i' < j'$).
+Then we compute $k = \min(L[i'], L[i'+1], \ldots, L[j'-1])$.
 We claim that $\LCP(\alpha[i:{}], \alpha[j:{}])$ is exactly~$k$.
 
 First, each pair of adjacent suffixes in the range $[i',j']$ has a~common prefix of
 length at least~$k$, so our LCP is at least~$k$. However, it cannot be more:
 we have $k = L[\ell]$ for some~$\ell \in [i',j'-1]$, so the $\ell$-th and $(\ell+1)$-th suffix
-differ at position $k+1$. Since all suffixes in the range share the first~$k$ characters,
+differ at position $k+1$ (or one of the suffixes ends at position~$k$, but we can simply
+imagine a~padding character at the end, ordered before all ordinary characters.)
+Since all suffixes in the range share the first~$k$ characters,
 their $(k+1)$-th characters must be non-decreasing. This means that the $(k+1)$-th character
 of the first and the last suffix in the range must differ, too.
 }
-- 
GitLab