美文网首页
72. 编辑距离

72. 编辑距离

作者: 邦_ | 来源:发表于2022-07-06 14:12 被阅读0次

动态规划。先要找状态方程


截屏2022-07-06 11.16.11.png

1、删除操作的时候
同一列的字符串 上边的是由下边的长的字符 最少删除一个字符得到的
d[i][j] = d[i - 1][j] + 1
2、插入操作的时候
d[i][j] = d[i][j - 1] + 1
3、替换操作的时候
如果最后一个字符不相同
s1[i - 1] != s2[j - 1]
最少的操作 = 需要上一个位置的字符串转换完成之后 + 替换操作
d[i][j] = d[i - 1][j - 1] + 1
如果最后一个位置的字符相同
s1[i - 1] == s2[j - 1]
最少的操作 = 需要上一个位置的字符串转换完成之后
d[i][j] = d[i - 1][j - 1]




func minDistance(_ word1: String, _ word2: String) -> Int {

        let wordArray1 = Array(word1)
        let wordArray2 = Array(word2)
        let row = wordArray1.count , col = wordArray2.count
        //初始化数组
        let temp = Array.init(repeating: 0, count: col + 1)
        var valueArray = Array.init(repeating: temp, count: row + 1)
        
        for i in 0...row {
            
            for j in 0...col {
                
                if i == 0 && j == 0 {
                    valueArray[i][j] = 0
                }else if i == 0 {
                    valueArray[0][j] = j
                }else if j == 0 {
                    valueArray[i][0] = i
                }else {
                    //尝试删除操作
                    valueArray[i][j] = valueArray[i - 1][j] + 1
                    //尝试插入操作
                    valueArray[i][j] = min(valueArray[i][j],valueArray[i][j - 1] + 1)
                    //尝试替换操作
                    //最后一个字符不相同
                    if wordArray1[i - 1] != wordArray2[j - 1] {
                        
                        valueArray[i][j] = min(valueArray[i][j],  valueArray[i - 1][j - 1] + 1)
                        
                    }else{
                        valueArray[i][j] = min(valueArray[i][j],valueArray[i - 1][j - 1])
                    }

                    
                }
                
            }
        }
                
        
          return valueArray[row][col]
    
    }









相关文章

  • 72. Edit Distance, 编辑距离

    72. Edit Distance, 编辑距离

  • 72. 编辑距离

    题目 思路 动态规划的题目 递归 上述一个递归过程: 如果字符串最后一个相等,两个字符串-1 如果不相等:2.1 ...

  • 72. 编辑距离

    给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对...

  • 72.编辑距离

    原题 https://leetcode-cn.com/problems/edit-distance/ 解题思路 题...

  • 72. 编辑距离

    72. 编辑距离 给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的...

  • 72. 编辑距离

    题目:给你两个单词word1和word2,计算将word1转成word2所需要的的最少操作数。你可以对一个单词进行...

  • 72. 编辑距离

    解法

  • 72. 编辑距离

    ``` classSolution{ publicintminDistance(Stringword1,Strin...

  • 72.编辑距离

    72. 编辑距离[https://leetcode-cn.com/problems/edit-distance/]...

  • 72.编辑距离

    72.编辑距离[https://leetcode.cn/problems/edit-distance/] 给你两个...

网友评论

      本文标题:72. 编辑距离

      本文链接:https://www.haomeiwen.com/subject/idxybrtx.html