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

计算字符串的编辑距离

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

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a = in.nextLine();
        String b = in.nextLine();
        int[][] dp = new int[a.length() + 1][b.length() + 1];
        // 初始化 当b串为空串时 a串的编辑距离 为a串的长度
        for (int i = 1; i <= a.length(); i++) {
            dp[i][0] = i;
        }        
        for (int i = 1; i <= b.length(); i++) {
            dp[0][i] = i;
        }
        for (int i = 1; i <= a.length(); i++) {
            for (int j = 1; j <= b.length(); j++) {
                // 如果当前位置两个字符相等 那么不用编辑 
                // 编辑距离等于前一个字符的编辑距离
                if (a.charAt(i - 1) == b.charAt(j - 1)) {
                    dp[i][j] = dp[i - 1][j - 1];
                } else {
                    // 在替换、插入、删除中找一个最小的编辑距离
                    dp[i][j] = Math.min(dp[i - 1][j - 1] + 1, 
                        Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1));
                }
            }
        }
        System.out.println(dp[a.length()][b.length()]);
    }
}

#华为笔试#
全部评论

相关推荐

11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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