Hiring process8 levels
  1. 1 IQ Test
  2. 2 Additional Online Test (If Required)
  3. 3 Office Interview with Hiring Manager
  4. 4 Unpaid Test Task (Motivation Check)
  5. 5 Paid Test Task and Follow-Up Interview
  6. 6 Iterative Paid Test Tasks
  7. 7 Office Verification
  8. 8 Final Interview with the Founder

Problems > How Many Distinct Substrings > Editorial

How Many Distinct Substrings — Solution & Editorial

Back to the Problem

Every substring is a prefix of some suffix. Sorting suffixes (suffix array) and subtracting adjacent LCPs removes the double-counted shared prefixes: answer = ∑(n−sa[i]) − ∑lcp[i] = n(n+1)/2 − ∑lcp.

Complexity: O(n log n)

Watch out: The count can reach ~5×109 — 64-bit.