题解 | 计算字符串的编辑距离

计算字符串的编辑距离

https://www.nowcoder.com/practice/3959837097c7413a961a135d7104c314

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str1=in.nextLine();
        String str2=in.nextLine();
        int m=str1.length();
        int n=str2.length();
        int[][] dp=new int[m+1][n+1];
        //dp[i][j]表示str1前i个与str2前j个字符的最小编辑距离
        //结果是dp[m][n];
        for(int i=0;i<=m;i++){
            dp[i][0]=i;
        }
        for(int i=0;i<=n;i++){
            dp[0][i]=i;
        }

        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                if(str1.charAt(i-1)==str2.charAt(j-1)){
                    dp[i][j]=dp[i-1][j-1];
                }else{
                    //两者不相等,需要考虑不同办法取最优
                    //1. 左边删掉 dp[i-1][j]+1
                    //2.右边删掉 dp[i][j-1]+1
                    //3.左边改成右边 dp[i-1][j-1]+1 前面相等即可
                    dp[i][j]=dp[i-1][j-1]+1;
                   dp[i][j]= Math.min(dp[i][j], dp[i-1][j]+1);
                   dp[i][j]= Math.min(dp[i][j], dp[i][j-1]+1);
                }

            }
        }
     System.out.println( dp[m][n]);

    }
}

还是要定义清楚dp[i][j]

全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务