What it is
// For s = "banana":
// Suffixes: banana(0), anana(1), nana(2), ana(3), na(4), a(5)
// Sorted: a(5), ana(3), anana(1), banana(0), na(4), nana(2)
// SA = [5, 3, 1, 0, 4, 2]Advertisement
Substring search
Binary search suffix array for pattern P. O(P × log N). Way better than naive O(N × P).
Advertisement
Build in O(N log² N)
Sort suffixes by first 1 char, then 2, then 4… doubling. Radix sort each pass. O(N log N) with clever radix.
LCP array
Longest Common Prefix between adjacent suffixes in SA. Enables O(1) LCP queries after O(N) preprocessing.