583. 两个字符串的删除操作
对角线上的点都是对应前n个序列的最优解
class Solution { public int minDistance(String word1, String word2) { char w1[] = word1.toCharArray(); char w2[] = word2.toCharArray(); int n = w1.length; int m = w2.length; int f[][] = new int [n+1][m+1]; for(int i = 0 ; i < n ; i++) { for(int j = 0 ; j < m ; j++) { if(w1[i]==w2[j]) f[i+1][j+1] = f[i][j]+1;//Math.max(f[i+1][j+1-1], f[i+1-1][j+1-1])+1;//只能是斜上角 用相邻的话自己的位置算了两次 else f[i+1][j+1] = Math.max(f[i+1][j+1-1],f[i+1-1][j+1]); } } // for(int i = 0 ; i<=n;i++){ // for(int j = 0 ; j <= m ;j++){ // System.out.print(f[i][j]+" "); // }System.out.println(); // } return (m+n)-2*f[n][m]; } }