What are good data structures for auto-completion algorithms? What data structures allow for efficiently finding strings containing a particular substring?
If you are looking to do something similar to the way Google implements it's autocomplete, you might want to check out a ternary search tree:
http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/
However, if you want to find any random substring within a string, try a Generalised suffix tree.
If you're doing prefixes (which is what most autocompletes do) then a ternary search tree is also what I'd recommend. If you're doing general infixes, then go with a suffix tree, as mentioned above.
As an alternative to Suffix Arrays, Trees and Tries, take a look at Directed Acyclic Word Graphs (DAWGs) and the Compressed variant (CDAWGs). They can be built in linear time, take up linear space, and allow for substring search.
With a more complicated search function, you can even support a limited set of wildcards.