/** * Propose suggestions for misspelled run-on words. This algorithm is inspired by spell.cc in * s_fsa package by Jan Daciuk. * * @param original The original misspelled word. * @return The list of suggested pairs, as space-concatenated strings. */ public List<String> replaceRunOnWords(final String original) { final List<String> candidates = new ArrayList<String>(); if (!isInDictionary( DictionaryLookup.applyReplacements( original, dictionaryMetadata.getInputConversionPairs())) && dictionaryMetadata.isSupportingRunOnWords()) { for (int i = 1; i < original.length(); i++) { // chop from left to right final CharSequence firstCh = original.subSequence(0, i); if (isInDictionary(firstCh) && isInDictionary(original.subSequence(i, original.length()))) { if (!dictionaryMetadata.getOutputConversionPairs().isEmpty()) { candidates.add(firstCh + " " + original.subSequence(i, original.length())); } else { candidates.add( DictionaryLookup.applyReplacements( firstCh + " " + original.subSequence(i, original.length()), dictionaryMetadata.getOutputConversionPairs()) .toString()); } } } } return candidates; }