题解 | 计算字符串的编辑距离

package main

import (
    "fmt"
)

func main() {
    var s1, s2 string
    fmt.Scan(&s1, &s2)
    dp := make([][]int, len(s1) + 1)
    for i:=0;i<len(s1)+1;i++ {
        dp[i] = make([]int, len(s2) + 1)
        dp[i][0] = i
    }
    for i:=0;i<len(s2) + 1;i++ {
        dp[0][i] = i
    }
    for i:=0;i<len(s1);i++ {
        for j:=0;j<len(s2);j++ {
            if s1[i] == s2[j] {
                dp[i+1][j+1] = dp[i][j]
            } else {
                dp[i+1][j+1] = min(min(dp[i][j+1],dp[i+1][j]), dp[i][j]) + 1
            }
        }
    }
    // fmt.Println(dp)
    fmt.Println(dp[len(s1)][len(s2)])

}

func min(a,b int) int {
    if a > b {
        return b
    }
    return a
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务