Я думаю, что вам нужно Расстояние Левешштейна - это говорит вам, сколько изменений (вставок, удалений или замен) требуется для преобразования одной строки в другую.
Например, разница между abcde
и abcdef
равна 1, потому что вы вставляете f
после последней позиции в abcde
, чтобы получить abcdef
.
Разница между abcde
и abcdf
также равна 1, поскольку вы заменяете e
в первой строке на f
, чтобы получить вторую.
Разница между abcde
и abde
равна 1, поскольку вы удаляете c
в первой строке, чтобы получить вторую.
Очень хорошая реализация может быть найдена в Apache Commons Text : LevenshteinDistance .
Вот пример примера реализации в Java .