BM75 编辑距离(一)


题目描述

给定两个字符串 str1 和 str2 ,请你算出将 str1 转为 str2 的最少操作数。
你可以对字符串进行3种操作:
1.插入一个字符
2.删除一个字符
3.修改一个字符。

字符串长度满足 1<=n<=1000 ,保证字符串中只出现小写英文字母。


一、思路引出

要把一个字符串经过一定次数的增删改操作转换成另一个字符串,一般显示考虑从其子串入手,先尝试将字符串1的某个子串转换为字符串2的某个子串,计算其最短转换操作次数,而子串应当还可以继续拆分,这实际上是一种动态规划算法

二、具体算法

1.算法设计

构造一个二维数组distance[ i ][ j ] 用于记录原字符串0~i 位置的子串转换为目标字符串0~j 位置的子串所需的操作次数,另外对于长度为0的第0个子串,其转换为目标串的任意子串的编辑距离一定等于该目标子串的长度,依此初始化distance距离数组。
图片来自网络

int max_len = Math.max(str1.length(),str2.length());
distance = new int[max_len+1][max_len+1];

for(int i=0; i<=str1.length(); i++){
   
    distance[i][0] = i;
}
for(int j=0; j<=str2.length()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值