计算字符串的相似度

编程之美223页的题目。

如果他们的第一个字符相同,那么计算接下来的字符串的距离。

如果他们的第一个字符不同,那么

1、删除a的第一个字符,计算a接下来的字符串和b的距离

2、删除b的第一个字符,计算b接下来的字符串和a的距离

3、修改a的第一个字符为b的第一个字符,计算a接下来的字符串和b接下来的字符串距离

4、修改b的第一个字符为a的第一个字符,计算a接下来的字符串和b接下来的字符串距离

5、添加a的第一个字符到b的开头部分,计算a接下来的字符串和b的距离

6、添加b的第一个字符到a的开头部分,计算a和b接下来的部分的距离

我们并不关心修改、添加、删除之后,得到的字符串是什么。仅仅关心这个距离是多少。那么上面可以总结为:

一步修改之后,计算a[2-a.len]和b[1-b.len]的距离

一步修改之后,计算a[1-a.len]和b[2-b.len]的距离

一步修改之后,计算a[2-a.len]和b[2-b.len]的距离

于是可以有递归程序了。

递归程序写的时候会重复计算一些内容,可以用打表的方式记录已经计算过的内容。防止重复计算。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值