一. 题目

二. 思路

三. 代码

import java.util.*;

public class Main
{
    static final int N = (int) 1e3 + 10;
    static final Scanner sc = new Scanner(System.in);

    int[][] f = new int[N][N];

    public static void main(String[] args)
    {
        Main main = new Main();
        main.work();
    }

    void work()
    {
        int n = sc.nextInt();
        String a = '!' + sc.next();
        int m = sc.nextInt();
        String b = '!' + sc.next();
        for (int i = 1; i <= n; i++) f[i][0] = i;
        for (int i = 1; i <= m; i++) f[0][i] = i;

        for (int i = 1; i <= n; ++i)
            for (int j = 1; j <= m; ++j)
            {
                f[i][j] = Math.min(f[i - 1][j], f[i][j - 1]) + 1;
                f[i][j] = Math.min(f[i][j], f[i - 1][j - 1] + (a.charAt(i) != b.charAt(j) ? 1 : 0));
            }
        System.out.println(f[n][m]);
    }
}