我正在编写软件来跟踪作者对一本书的多个版本所做的更改。我已经编写了生成一组描述两个版本之间差异的增量的代码。
现在我正在寻找一种算法来将所有这些差异内联以创建一个“超字符串”,其中包含在每个版本中插入和删除的所有文本。然后,我想用有关添加和删除文本的位置的信息来标记 HTML 中的字符串。
通过这种方式,我可以通过简单地将不同的 CSS 属性应用于文档来可视化文本之间的差异。
例子
如果作者这样改一句
-0- --1-- ---2--- ---3---
' ' -> 'cat' -> 'crate' -> 'crane'
我的代码产生这些增量
0-1) <insert 'cat' at 0>
1-2) <insert 'r' at 1> <insert 'e' at 3>
2-3) <remove from 3 to 4> <insert 'n' at 3>
我要处理以创建这样的文件:
<span class="inserted-1">c</span>
<span class="inserted-2">r</span>
<span class="inserted-1">a</span>
<span class="inserted-1 removed-3">t</span>
<span class="inserted-3">n</span>
<span class="inserted-2">e</span>
问题
完成这项任务的最佳算法是什么?这个问题有名字吗?