计算两个字符串的相似度(递归和DP)
2016-08-27 12:38
344 查看
在看完《编程之美》一书的“计算字符串的相似度”一文后,对该书最后提出的问题作一点回忆与思考。
这里先将原问题再复述一遍:
原文的问题描述: 许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
1.修改一个字符(如把“a”替换为“b”);
2.增加一个字符(如把“abdd”变为“aebdd”);
3.删除一个字符(如把“travelling”变为“traveling”);
比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。上面的两种方案,都仅需要一 次 。把这个操作所需要的次数定义为两个字符串的距离,而相似度等于“距离+1”的倒数。也就是说,“abcdefg”和“abcdef”的距离为1,相似度 为1/2=0.5。
给定任意两个字符串,你是否能写出一个算法来计算它们的相似度呢?
这里先将原问题再复述一遍:
原文的问题描述: 许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:
1.修改一个字符(如把“a”替换为“b”);
2.增加一个字符(如把“abdd”变为“aebdd”);
3.删除一个字符(如把“travelling”变为“traveling”);
比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。上面的两种方案,都仅需要一 次 。把这个操作所需要的次数定义为两个字符串的距离,而相似度等于“距离+1”的倒数。也就是说,“abcdefg”和“abcdef”的距离为1,相似度 为1/2=0.5。
给定任意两个字符串,你是否能写出一个算法来计算它们的相似度呢?
相关文章推荐
- 计算两个字符串相似度
- 计算字符串之间的相似度(递归)
- Levenshtein Distance + LCS 算法计算两个字符串的相似度
- 计算字符串相似度--dp
- Levenshtein Distance + LCS 算法计算两个字符串的相似度
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
- C#计算两个字符串的相似度
- 使用PHP similar text计算两个字符串相似度
- 计算两个中文字符串相似度——编辑距离算法
- C# 计算两个字符串的相似度
- 编程之美:计算两个字符串的相似度---动态规划实现
- Levenshtein Distance + LCS 算法计算两个字符串的相似度
- 计算两个字符串相似度的LD算法
- 编辑距离LCS算法详解:Levenshtein Distance算法计算两个字符串的相似度
- 计算两个中文字符串相似度——编辑距离算法
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
- Levenshtein Distance + LCS 算法计算两个字符串的相似度
- 使用PHP similar text计算两个字符串相似度
- C#计算两个字符串的相似度
- 计算两个字符串的距离(相似度)