Какой лучший алгоритм разницы (слов или символов)?

Итак, я хочу иметь возможность находить разницу между двумя строками на основе каждого слова (возможно, быстрее, чем на основе символов, хотя, если на основе символов быстрее, то я бы хотел сделать это таким образом).

Вот пример того, чего я хочу достичь: Исходный текст:

Hello there!

Измененный текст:

Helay scere?

diff:

Hel[lo](ay) [th](sc)ere[!](?)
  • текст в скобках - это то, что было удалено, текст в скобках - то, что было добавлено

есть супер хакерский способ сделать это, используя инструмент командной строки, такой как opendiff, но он требует символ новой строки между каждым символом, так как opendiff основан на строках.

Я использую ruby, и не нашел никаких инструментов для этого... но язык не так важен, так как алгоритмы могут быть перенесены довольно легко.

спасибо.

8
задан NullVoxPopuli 5 December 2011 в 20:54
поделиться