We consider the problem of encoding a string of length n from an alphabet [0, σ − 1] so that access and substring-equality queries (that is, determining the equality of any two substrings) can be answered efficiently. A clear lower bound on the size of any prefix-free encoding of this kind is n log σ + Θ(log(nσ)) bits. We describe a new encoding matching this lower bound when σ ≤ n O(1) while supporting queries in optimal O(1)-time in the cell-probe model, and show how to extend the result to the word-RAM model using Θ(log 2 n) bits of additional space.Using our new encoding, we obtain the first optimal-space algorithms for several stringprocessing problems in the word-RAM model with rewritable input. In particular, we describe the first in-place algorithm computing the LCP array in O(n log n) expected time and the first in-place Monte Carlo solutions to the sparse suffix sorting, sparse LCP array construction, and suffix selection problems. Our algorithms are also the first running in sublinear time for small enough sets of input suffixes. Combining these solutions, we obtain the first optimal-space and sublinear-time algorithm for building the sparse suffix tree.