递推公式:levenST[ i ][ j ] = minOfTreeNum( levenST[ i-1 ][ j ] + 1, levenST[ i ][ j-1 ] + 1, levenST [i-1 ][ j-1 ] + eq );
code:
import java.util.Scanner; public class Main8 { public static void main(String args[]) { Scanner s = new Scanner(System.in); String str1 = s.nextLine(); String str2 = s.nextLine(); int len1 = str1.length(); int len2 = str2.length(); //这样设置表示我使用str1与str2比较 int ar[][] = new int[len1+1][len2+1]; //初始化最简单的情况:0->i或0->j for(int i=0;i<len1+1;i++) { ar[i][0] = i; } for(int i=0;i<len2+1;i++) { ar[0][i] = i; } //开始逐个字符比较:从1开始 for(int i=1;i<len1+1;i++) { for(int j=1;j<len2+1;j++) { int temp = ar[i-1][j-1]; if(str1.charAt(i-1) != str2.charAt(j-1)) { temp+=1; } ar[i][j] = Math.min(ar[i-1][j]+1, Math.min(ar[i][j-1]+1, temp)); } } for(int i=0;i<len1+1;i++) { for(int j=0;j<len2+1;j++) { System.out.print(ar[i][j]+" "); } System.out.println(""); } s.close(); } }
博客参考:https://www.cnblogs.com/www-helloworld-com/p/10202923.html