查看: 1664| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

[动态规划] 【Edit Distance】生成的数组是(m+1)*(n+1)和m*n真的有差别吗?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
和很多答案比了比,后半部分没有差别。
好吧我觉得错误并不在于生成的二维数组是m*n还是(m+1)*(n+1),而是在初始化的阶段。
我的逻辑是在二维数组的第一行和第一列中用字符串1的第一个字符和字符串2比,遇到相等的字符就不变,如果不同就把前面的数+1。
答案是构造二维数组(m+1)*(n+1),用空字符去比字符串1和2.
差别在哪?为什么我的答案就会出错呢?求拍醒。

EditDistance.jpg (143.53 KB, 下载次数: 4)

EditDistance.jpg

上一篇:San Jose 弱问是否有人一起刷题
下一篇:求大神解答,这段Python代码看不懂...
🔗
stellari 2015-8-11 11:01:03 | 只看该作者
全局:
你这个逻辑不对,随便举个例子吧,比如:word1 = 'aaaaaaaa', word2 = 'aba'.
现在拿word2中的字符分别和word1的第一个字符‘a'比:

1. a == a  => start = 0; 正确
2. a != b => start = 1; 正确
3. a == a => start = 1; 错误!'a' 和 'aba'的distance应为2.

正确的逻辑是:“start不增加的循环最多出现一次”,即第二次出现a == a时就应该跳过。所以你还不如就用m+1,n+1的代码好了。
回复

使用道具 举报

🔗
 楼主| 小马3107 2015-8-11 11:15:45 | 只看该作者
全局:
stellari 发表于 2015-8-11 11:01
你这个逻辑不对,随便举个例子吧,比如:word1 = 'aaaaaaaa', word2 = 'aba'.
现在拿word2中的字符分别和w ...

好的。谢谢!
回复

使用道具 举报

🔗
zhuli19901106 2015-8-14 17:29:48 | 只看该作者
全局:
多加1个往往是为了让代码更好写,原理肯定是一样的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表