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

Leetcode 712. Minimum ASCII Delete Sum for Two Strings

Problem

Given two strings s1 and s2, return the lowest ASCII sum of deleted characters to make two strings equal.

Algorithm

Dynamic Programming (DP): similar as Longest Common Subsequence (LCS).

  • If s1[i] != s2[j]:
    F ( i , j ) = min ⁡ ( F ( i − 1 , j ) + cost ( s 1 [ i ] ) ,   F ( i , j − 1 ) + cost ( s 2 [ j ] ) ) F(i, j) = \min \left( F(i-1, j) + \text{cost}(s1[i]), \, F(i, j-1) + \text{cost}(s2[j]) \right) F(i,j)=min(F(i1,j)+cost(s1[i]),F(i,j1)+cost(s2[j]))

  • If s1[i] == s2[j]:
    F ( i , j ) = F ( i − 1 , j − 1 ) F(i, j) = F(i-1, j-1) F(i,j)=F(i1,j1)

Code

class Solution:
    def minimumDeleteSum(self, s1: str, s2: str) -> int:
        l1, l2 = len(s1) + 1, len(s2) + 1
        dp = [[0] * l2 for _ in range(l1)] 

        for i in range(1, l1):
            dp[i][0] = dp[i-1][0] + ord(s1[i-1])
        for j in range(1, l2):
            dp[0][j] = dp[0][j-1] + ord(s2[j-1])
        
        for i in range(1, l1):
            for j in range(1, l2):
                if s1[i-1] == s2[j-1]:
                    dp[i][j] = dp[i-1][j-1]
                else:
                    dp[i][j] = min(dp[i-1][j] + ord(s1[i-1]), dp[i][j-1] + ord(s2[j-1]))
        
        return dp[l1-1][l2-1]

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

相关文章:

  • Jvascript网页设计案例:通过js实现一款密码强度检测,适用于等保测评整改
  • 卓越设计彰显品质:福特中国“烈马宇宙”项目展示高质量标准
  • AI大模型学习(一)
  • Windows环境安装部署minimind步骤
  • 民用无人驾驶航空器操控员考试
  • 连锁企业管理系统的五大核心功能
  • Linux-ubuntu系统移植之Uboot作用以及相关命令
  • 蓝桥杯 Java B 组 之队列的应用(BFS 入门)
  • ai时代我们面临的机遇和挑战是什么
  • 用C++实现点到三角形最小距离的计算
  • 基于Spring Boot的家电销售展示平台设计与实现(LW+源码+讲解)
  • CI/CD(二)docker-compose安装Jenkins
  • C++11 thread
  • AF3 MmcifObject类解读
  • 故地重游:一眼是曾经,一眼是如今
  • spring boot 对接aws 的S3 服务,实现上传和查询
  • 【Black Mesa】黑山起源用服务器开服多人联机教程
  • DOS命令 setx 用法
  • linux常用命令大全(包括抓包、网络检测、路由等,做项目一点点总结而来!)
  • 静默安装OGG for MySQL微服务版本,高效开展数据同步和迁移