I was wondering is there an efficient algorithm to group similar words that are only one character off? Like "rat" and "cat"
Look at Levenshtein distance (also known as edit distance) and suffix trees.
I just had an interview with facebook on this and bombed it :(