Ответ 1
Обычным измерением для этого является расстояние Левенштейна. Вычислите расстояние Левенштейна от оригинала до каждого кандидата и возьмите наименьшее расстояние как наиболее вероятный кандидат.
Кто-нибудь знает, существует ли алгоритм, который задал одну строку A и массив строк B, сравнивает строку A со всеми строками в B, давая в выводе наиболее похожие.
Для "наиболее похожего" я имею в виду, например,
если строка A: "hello world how are you"
то
"asdf asdewr привет мир, как asfrqr вы"
больше похоже:
"h2ll4 w1111 h11 111 111"
Обычным измерением для этого является расстояние Левенштейна. Вычислите расстояние Левенштейна от оригинала до каждого кандидата и возьмите наименьшее расстояние как наиболее вероятный кандидат.
Определите сходство. Алгоритмы, которые могут это сделать, включают:
Все это может быть реализовано на C или С++. Google "строковое сходство", "дублирование поиска" или "запись связи" для доступных показателей и алгоритмов.
Это обычно делается с проверкой множества вариантов строки, которые у вас есть... взгляните на алгоритмы коррекции орфографии - например, здесь