algorithm - 电子邮件的 GMail diff 算法

标签 algorithm email diff

当您发送电子邮件时,邮件客户端通常会“引用”所有旧电子邮件。 但是因为这是在客户端完成的,所以这样做当然没有标准:

  • 一些插入 > 在一行的开头作为引用的指示符
  • 一些在引用的文本之上写新文本,一些在引用的文本之下
  • 例如,webOS 没有任何“引用”旧文本的方法。它只是按原样插入。

GMail 在过滤掉已发送电子邮件的旧部分方面做得非常好,并为用户提供“显示引用文本”选项。

是否有任何类似的算法可以检测这些相似的部分?

最佳答案

我不知道使用了什么算法,但由于这是电子邮件而不是代码,diff 应该容易得多。基本上,如果您将每一行视为字符串中的一个字符(使用某种哈希表示法),则电子邮件可以表示为一个字符串(每行一个字符)。

然后您可以使用最小编辑距离算法来计算从一封电子邮件到另一封电子邮件时添加的内容和删除的内容。所有常见的内容都会成为您引用的文本,所有添加的内容都会成为您的新电子邮件。

这是字符串 edit distance algo 的链接:

关于algorithm - 电子邮件的 GMail diff 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4099510/

相关文章:

python - 获取两个字符串之间添加和删除的单词

python - 在 Python 中生成漂亮的 diff html

algorithm - 如何确定(子集的笛卡尔积并集)是否等于(完整集的笛卡尔积)

algorithm - 查找最小堆是否有 k 个小于查询的元素

python - 使用 SMTP 库通过 python 发送电子邮件

javascript - 如何从文本中解析/trim 电子邮件地址

eclipse - Aptana文件差异?

algorithm - 证明/说明算法的时间复杂度为O(h+k)

python - 在列表中查找最长的不间断公共(public)元素

javamail - 获取邮件正文内容格式错误