I created a pretty simple method that suggests the correct word about 95% of the time. The code is about one page in length. It runs very fast.
I relies on two dictionary text files. One is a regular list of correctly spelled words. The other is editable so that you can add proper nouns and technical words. All words are separated by ASCII CHR 10. Both dictionary files are loaded into a string called dictionary. You take a word and see if it is in the dictionary with (in MS visual basic):
If dictionary.Contains(Chr(10) + wordtocheck + Chr(10)) = False Then (look for hint)
For hints to the correct word, you merely alter the wordtocheck with the following basic changes and see if each are in the dictionary. Each assumes the first letter is correct:
Add one letter: This method starts with the position between the first and second letters and inserts an additional letter A-Z. The routine moves down the word inserting letters. A letter is also added at the end of the word. (QUEING becomes QUEUING)
Remove one letter: This method starts with the second letter and removes it. It continues to the last letter in the word. (SOILDER becomes SOLDER)
Change one letter: This method starts with the second letter and replaces it with A-Z. It continues down to the last letter in the word. (ACCELEROMETORS becomes ACCELEROMETERS)
Swap two letters: This method starts with the 2nd and 3rd letters. It swaps them and checks for a dictionary match. It continues swapping letters up to the last two letters in the word. (SCHEDUEL becomes SCHEDULE)
By the way. All the Levenshtein distance code examples that I found on-line have issues. They don't handle words with duplicate letters.