1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| func minDistance(word1 string, word2 string) int { dp := make([][]int, len(word1)+1) for i := range dp { dp[i] = make([]int, len(word2)+1) } for i := 0; i < len(word1)+1; i++ { dp[i][0] = i } for j := 0; j < len(word2)+1; j++ { dp[0][j] = j } for i := 1; i <= len(word1); i++ { for j := 1; j <= len(word2); j++ { if word1[i-1] == word2[j-1] { dp[i][j] = dp[i-1][j-1] } else { dp[i][j] = Min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1]) + 1 } } } return dp[len(word1)][len(word2)] } func Min(args ...int) int { min := args[0] for _, item := range args { if item < min { min = item } } return min }
|