如下图所示,这是一个文章批改功能。
比如其中有一句“虽然我们相识了10年,我的收入不高”
而批改的话句话是“虽然我们相识了10年,但是因为我的收入不高”
他就能知道“但是因为”是新增的部分,所以标蓝了
再比如其中有一句“反正她最近升职了”
批改的话是“反而是她最近升职了”
他就知道把“正”去掉,新增了“而是”
so,这个功能应该如何实现?只谈谈思路也可,有代码或demo更佳。
如下图所示,这是一个文章批改功能。
比如其中有一句“虽然我们相识了10年,我的收入不高”
而批改的话句话是“虽然我们相识了10年,但是因为我的收入不高”
他就能知道“但是因为”是新增的部分,所以标蓝了
再比如其中有一句“反正她最近升职了”
批改的话是“反而是她最近升职了”
他就知道把“正”去掉,新增了“而是”
so,这个功能应该如何实现?只谈谈思路也可,有代码或demo更佳。
我突然有一个想法。将两段文字按照某种规则排序,选取教小那段文字,进行二分查找,查找什么呢?查找和长段文字不同的最后一个字符,相同向右,不同向左,直到最后一个。找到这个字符后就好处理了。源右边是被删除了的,处理后的是新增的。只是这样是无序的,如果需要有序,之前加一个索引,之后在按照索引排序即可。
这个其实diff就可以实现,可以把源文件和后面的文件按每个字符分行(原来的分行变成连续2个分行),这样diff直接就可以给出那些是删除的,那些是处理后新增的。
这样把连续删除的接一起,连续新增的接一起就可以给出结果。
15 回答8.4k 阅读
8 回答6.2k 阅读
3 回答2k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
2 回答3.9k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
可以用git diff的算法, 具体名字叫
Myers 算法