当前位置: 首页 > article >正文

机试刷题_编辑距离(二)【python】

题目:编辑距离(二)

描述
给定两个字符串str1和str2,再给定三个整数ic,dc和rc,分别代表插入、删除和替换一个字符的代价,请输出将str1编辑成str2的最小代价。

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# min edit cost
# @param str1 string字符串 the string
# @param str2 string字符串 the string
# @param ic int整型 insert cost
# @param dc int整型 delete cost
# @param rc int整型 replace cost
# @return int整型
#
class Solution:
    def minEditCost(self , str1: str, str2: str, ic: int, dc: int, rc: int) -> int:
        # 动态规划
        n = len(str1)
        m = len(str2)
        dp = [[0]*(m+1) for i in range(n+1)]
        # str2为0,只能删除
        for i in range(n+1):
            dp[i][0] = i*dc
        # str1为0,只能插入
        for j in range(m+1):
            dp[0][j] = j*ic
        for i in range(1,n+1):
            for j in range(1,m+1):
                if str1[i-1] == str2[j-1]:
                    dp[i][j] = dp[i-1][j-1]
                else:
                    dp[i][j] = min(dp[i][j-1]+ic,dp[i-1][j]+dc,dp[i-1][j-1]+rc)
        return dp[n][m]
        

http://www.kler.cn/a/557004.html

相关文章:

  • 【Flink 实战】Flink 中 Akka 通信与内存占用分析
  • 【设计模式】【创建型模式】单例模式(Singleton)
  • golang时间相关函数总结
  • ZLG嵌入式笔记 | 为什么你的网卡工作会不正常?(上
  • Typora的Github主题美化
  • Service Mesh在爱奇艺的落地实践:架构、运维与扩展
  • 微服务即时通信系统---(二)框架学习
  • 迪威模型:引领 3D 模型轻量化技术革新
  • vue从入门到精通(十一):条件渲染
  • 股票与比特币投资困境分析及解决方案
  • FFmpeg中的编码和解码流程
  • 实现动态翻转时钟效果的 HTML、CSS 和 JavaScript,附源码
  • RPC:分布式系统的通信桥梁
  • 【MySQL】索引和视图
  • 【CXX】5 桥接模块参考
  • 【够用就好005】-在VSCode中管理ECS服务器的实操步骤
  • MYSQL的第一次
  • AI赋能编程:PyCharm与DeepSeek的智能开发革命
  • 一周学会Flask3 Python Web开发-客户端状态信息Cookie以及加密
  • 2025.2.23机器学习笔记:PINN文献阅读