给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数。
问题:
给出两个单词word1和word2,写一个函数计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:
1、插入一个字符
2、删除一个字符
3、替换一个字符
格式:
输入行输入两个字符串 word1 和 word2,最后输出将 word1 转换为 word2的最少操作次数。
例如:
输入
word1 = "mart"
word2 = "karma"
输出
3
准备知识:
编辑距离及编辑距离算法
代码实现:
1.
1 2 3 4 5 6 7 8 9 10 11 12 13 | def d(m, n): if m = = 0 or n = = 0 : return abs (m - n) if word1[m - 1 ] = = word2[n - 1 ]: return d(m - 1 , n - 1 ) else : return min ([d(m, n - 1 ) + 1 , d(m - 1 , n) + 1 , d(m - 1 , n - 1 ) + 1 ]) while True : word1 = input ( "word1=:" ) word2 = input ( "word2=:" ) print (d( len (word1), len (word2))) |
2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | def minDis(word1,word2): m = len (word1) + 1 n = len (word2) + 1 dp = [[ 0 for i in range (n)] for j in range (m)] for i in range (n): dp[ 0 ][i] = i for i in range (m): dp[i][ 0 ] = i for i in range ( 1 ,m): for j in range ( 1 ,n): dp[i][j] = min (dp[i - 1 ][j] + 1 ,dp[i][j - 1 ] + 1 ,dp[i - 1 ][j - 1 ] + ( 0 if word1[i - 1 ] = = word2[j - 1 ] else 1 )) return dp[m - 1 ][n - 1 ] if __name__ = = '__main__' : word1 = input ( 'word1=' ) word2 = input ( 'word2=' ) print (minDis(word1, word2)) |
标签:
python
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥