LeetCode Edit Distance

来源:互联网 发布:mac拼音怎么打 编辑:程序博客网 时间:2024/06/06 06:34

Description:

Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)

You have the following 3 operations permitted on a word:

a) Insert a character
b) Delete a character
c) Replace a character


Solution:

classical edit distance

pay attention to the initialization circumstances, we can get dp[i][0] = i and dp[0][j] = j


<span style="font-size:18px;">import java.util.*;public class Solution {public int minDistance(String word1, String word2) {if (word1 == null)return 0;if (word2 == null)return 0;int n = word1.length();int m = word2.length();if (n == 0)return m;if (m == 0)return n;int dp[][] = new int[n + 1][m + 1];for (int i = 0; i <= n; i++)dp[i][0] = i;for (int j = 0; j <= m; j++)dp[0][j] = j;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++) {if (word1.charAt(i - 1) == word2.charAt(j - 1))dp[i][j] = Math.min(dp[i - 1][j - 1],Math.min(dp[i - 1][j], dp[i][j - 1]) + 1);elsedp[i][j] = Math.min(dp[i - 1][j - 1] + 1,Math.min(dp[i - 1][j], dp[i][j - 1]) + 1);}return dp[n][m];}}</span>


0 0
原创粉丝点击