日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lintcode:最小编辑距离

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lintcode:最小编辑距离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最小編輯距離?

給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。

你總共三種操作方法:

  • 插入一個字符
  • 刪除一個字符
  • 替換一個字符

樣例

給出 work1="mart" 和 work2="karma"

返回 3

解題

動態規劃解題

定義矩陣dp[][]

dp[i][j] 表示word1前i個字符 [0,1,2,...,i-1] 和 word2前j個字符?[0,1,2,...,j-1]的編輯距離

?

ch1 = word1.charAt(i)

ch2 = word2.charAt(j)

當 ch1== ch2:word1[0--(i-1)] 與word2[0--(j-1)] 的編輯距離dp[i][j] = dp[i-1][j-1] 不需要修改

當ch1!=ch2: 有三種修改方式

  •       ch1替換word2中的ch2,此時的編輯距離受上一位的編輯距離影響, 編輯距離是:dp[i-1][j-1] + 1
  • ? ? ? ? ? ? ? ? ? ch2插入到word1中ch1的前面,word1中的ch2還沒有比較,編輯距離是:dp[i-1][j] + 1
  • ? ? ? ? ? ? ? ? ? 刪除ch2 編輯距離:dp[i][j-1] + 1

選取上面的最小值更新dp[i][j]的值

Java程序定義的dp矩陣長度是len1 + 1 * len2 + 1 的和上面有一點區別?

import java.util.Scanner; // write your code here public class Main{public static void main(String[] args){Scanner in = new Scanner(System.in);Main m = new Main();while(in.hasNext()){String[] str = in.nextLine().split(" ");String word1 = str[0];String word2 = str[1];int min = m.minDistance(word1,word2);System.out.println(min);}}public int minDistance(String word1,String word2){int len1 = word1.length();int len2 = word2.length();int[][] dp = new int[len1+1][len2+1];for(int i =0;i<=len1;i++){dp[i][0] = i;}for(int j =0;j<= len2;j++){dp[0][j] = j;}for(int i =0;i< len1;i++){char ch1 = word1.charAt(i);for(int j =0;j< len2;j++){char ch2 = word2.charAt(j);if(ch1 == ch2){dp[i+1][j+1] = dp[i][j];}else{int replace = dp[i][j] +1;// ch1 代替 ch2int insert = dp[i][j+1] + 1;// ch2 插入到 ch1 前面的位置int delete = dp[i+1][j] + 1;// 刪除ch2int min =replace>insert?insert:replace;min = min>delete?delete:min;dp[i+1][j+1] = min;}}}return dp[len1][len2];} }

?注:搜狐2016實習筆試題目

轉載于:https://www.cnblogs.com/theskulls/p/5312505.html

總結

以上是生活随笔為你收集整理的lintcode:最小编辑距离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。