当您发送电子邮件时,邮件客户端通常会“引用”所有旧电子邮件。 但是因为这是在客户端完成的,所以这样做当然没有标准:
- 一些插入 > 在一行的开头作为引用的指示符
- 一些在引用的文本之上写新文本,一些在引用的文本之下
- 例如,webOS 没有任何“引用”旧文本的方法。它只是按原样插入。
GMail 在过滤掉已发送电子邮件的旧部分方面做得非常好,并为用户提供“显示引用文本”选项。
是否有任何类似的算法可以检测这些相似的部分?
最佳答案
我不知道使用了什么算法,但由于这是电子邮件而不是代码,diff 应该容易得多。基本上,如果您将每一行视为字符串中的一个字符(使用某种哈希表示法),则电子邮件可以表示为一个字符串(每行一个字符)。
然后您可以使用最小编辑距离算法来计算从一封电子邮件到另一封电子邮件时添加的内容和删除的内容。所有常见的内容都会成为您引用的文本,所有添加的内容都会成为您的新电子邮件。
这是字符串 edit distance algo 的链接:
关于algorithm - 电子邮件的 GMail diff 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099510/