編輯距離(Edit Distance),也稱為Levenshtein距離,是用來比較兩個字符串之間的相似度的方法。它可以通過一系列的編輯操作將一個字符串轉換為另一個字符串,包括插入、刪除和替換等操作。
以下是一個Java代碼示例,用于計算兩個字符串之間的編輯距離:
public class EditDistance {
? ? public static int editDistance(String word1, String word2) {
? ? ? ? int m = word1.length();
? ? ? ? int n = word2.length();
? ? ? ? // 初始化距離矩陣
? ? ? ? int[][] dp = new int[m + 1][n + 1];
? ? ? ? for (int i = 0; i <= m; i++) {
? ? ? ? ? ? dp[i][0] = i;
? ? ? ? }
? ? ? ? for (int j = 0; j <= n; j++) {
? ? ? ? ? ? dp[0][j] = j;
? ? ? ? }
? ? ? ? // 計算距離矩陣
? ? ? ? for (int i = 1; i <= m; i++) {
? ? ? ? ? ? for (int j = 1; j <= n; j++) {
? ? ? ? ? ? ? ? int cost = (word1.charAt(i - 1) == word2.charAt(j - 1)) ? 0 : 1;
? ? ? ? ? ? ? ? dp[i][j] = Math.min(Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1), dp[i - 1][j - 1] + cost);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return dp[m][n];
? ? }
? ? public static void main(String[] args) {
? ? ? ? String word1 = "kitten";
? ? ? ? String word2 = "sitting";
? ? ? ? System.out.println("編輯距離為:" + editDistance(word1, word2));
? ? }
}
這個示例代碼中的 editDistance() 方法接收兩個字符串作為參數,計算并返回它們之間的編輯距離。該方法使用動態規劃算法實現,時間復雜度為 O(mn),其中 m 和 n 分別是兩個字符串的長度。在這個示例中,我們計算了單詞"kitten"和"sitting"之間的編輯距離。