算法训练营day47,动态规划15

func min(a, b int) int {

  if a < b {

    return a

  }

  return b

}

//583. 两个字符串的删除操作

func minDistance1(word1 string, word2 string) int {

  n := len(word1)

  h := len(word2)

  dp := make([][]int, n+1)

  for i := 0; i <= n; i++ {

    dp[i] = make([]int, h+1)

    //当word2为空需要删word1的全部元素长度为i

    dp[i][0] = i

  }

  for j := 0; j <= h; j++ {

    //同样当word1为空需要删word2的全部元素长度为j

    dp[0][j] = j

  }

  for i := 1; i <= n; i++ {

    for j := 1; j <= h; j++ {

      if word1[i-1] == word2[j-1] {

        //元素相等无需做删减

        dp[i][j] = dp[i-1][j-1]

      } else {

        //当word1、word2字符串元素不相等,即可以删除word1的元素,也可以删除word2的元素,还可以两个数组元素都删除,因为求最少,所以取三者最小值

        dp[i][j] = min(dp[i-1][j-1]+2, min(dp[i-1][j]+1, dp[i][j-1]+1))

      }

    }

  }

  return dp[n][h]

}

//72. 编辑距离

func minDistance(word1 string, word2 string) int {

  n := len(word1)

  h := len(word2)

  dp := make([][]int, n+1)

  for i := 0; i <= n; i++ {

    dp[i] = make([]int, h+1)

    //当word2为空需要删word1的全部元素长度为i

    dp[i][0] = i

  }

  for j := 0; j <= h; j++ {

    //同样当word1为空需要删word2的全部元素长度为j

    dp[0][j] = j

  }

  for i := 1; i <= n; i++ {

    for j := 1; j <= h; j++ {

      if word1[i-1] == word2[j-1] {

        //元素相等无需做删减

        dp[i][j] = dp[i-1][j-1]

      } else {

        //当word1、word2字符串元素不相等,即可以删除或者添加word1的元素,还有替换元素,求最小值

        dp[i][j] = min(dp[i-1][j-1]+1, min(dp[i-1][j]+1, dp[i][j-1]+1))

      }

    }

  }

  return dp[n][h]

}

相关推荐

  1. 算法训练day47,动态规划15

    2024-03-11 17:08:02       43 阅读
  2. 算法训练Day49动态规划10

    2024-03-11 17:08:02       58 阅读
  3. 算法训练day44(补),动态规划12

    2024-03-11 17:08:02       34 阅读
  4. 算法训练Day40(动态规划

    2024-03-11 17:08:02       64 阅读
  5. 算法训练Day43动态规划5)

    2024-03-11 17:08:02       64 阅读
  6. 算法训练Day48动态规划9)

    2024-03-11 17:08:02       56 阅读
  7. 算法训练Day50(动态规划11

    2024-03-11 17:08:02       60 阅读
  8. 算法训练Day53(动态规划14

    2024-03-11 17:08:02       55 阅读
  9. 算法训练Day52(动态规划13

    2024-03-11 17:08:02       46 阅读
  10. 算法训练Day56(动态规划16

    2024-03-11 17:08:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 17:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 17:08:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 17:08:02       82 阅读
  4. Python语言-面向对象

    2024-03-11 17:08:02       91 阅读

热门阅读

  1. PC端使用USB模拟的串口ttyGS0登录

    2024-03-11 17:08:02       44 阅读
  2. fastgpt本地详细部署以及配置

    2024-03-11 17:08:02       46 阅读
  3. js【详解】BOM

    2024-03-11 17:08:02       48 阅读
  4. js获取日期格式&textarea高度随内容自适应

    2024-03-11 17:08:02       39 阅读
  5. cool-admin node.js 实现分页 数据获取 直接框架

    2024-03-11 17:08:02       42 阅读
  6. 【STM32+OPENMV】矩形识别

    2024-03-11 17:08:02       44 阅读
  7. Lua调用c++函数的两种办法

    2024-03-11 17:08:02       36 阅读
  8. 2k_Day1:今天是设计模式的大白话1

    2024-03-11 17:08:02       39 阅读
  9. 突破编程_C++_设计模式(装饰器模式)

    2024-03-11 17:08:02       40 阅读
  10. Unity3D AStar地图编辑与寻路测试详解

    2024-03-11 17:08:02       50 阅读
  11. JVM双亲委派模型

    2024-03-11 17:08:02       48 阅读
  12. C#面:& 和 && 区别

    2024-03-11 17:08:02       41 阅读