This question already has answers here:

Diff Algorithm? [closed]
(5个答案)
当我进入(例如)这里的回顾部分时,
我看到这些格式优美的文本差异:
或者合并的:
现在,这到底是怎么回事?我很想把这个包含到我的网站上,但我不能真正弄清楚算法。这有什么记录吗?
这方面是否有开源实现,最好是在PHP中?
谢谢你的帮助。

最佳答案

从你发布的图片和我自己的(虽然经验不多)来看,网站似乎使用了最长的通用子序列算法的修改这就解释了为什么它从不显示单词的重新排列/洗牌。
第一个修改是,他们不再把字母看作原子单位,而是把单词看作原子单位(也是标点符号)
其次,算法比较幼稚,它指出当你实际上只是在那里插入一个时,你划掉了“work”。它似乎只是标记任何类型的中断(插入、删除、修改)并划掉一个单词或整个中断部分。
第三,第二个列表中的所有内容(不是第一个列表的一部分)都用绿色标记。
似乎比较容易实现。查看一些关于动态编程的教程。

10-08 19:57