С# Diff Алгоритм для текста

Я ищу алгоритм diff, который даст результаты, такие как SO edit revisions page. Я более или менее просто начал смотреть, и я не против этого, но мне не нужно изобретать велосипед.

Я буду использовать С# 4.0. У меня в основном две строки, а одна - новая. Я хочу знать, что изменилось в новом, выделив и пробив.

Ответ 1

Он основан на алгоритме Longest common subsequence, который широко известен как LCS.

LCS старого текста и нового текста дает часть, которая остается неизменной. Таким образом, части старого текста, которые не являются частью LCS, являются тем, который был изменен.

На странице wiki выше:

Это классическая проблема компьютерных наук, основа diff (программа сравнения файлов, которая выводит различия между двумя файлами), и имеет приложения в биоинформатике.

Ответ 2

Вы можете посмотреть Menees Diff для примера, написанного на С#.