算法分析
时间复杂度 $O(n^2)$
Java 代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Main {
static int N = 1010;
static int[][] f = new int[N][N];
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
String a = " " + scan.next();
int m = scan.nextInt();
String b = " " + scan.next();
for(int i = 0;i <= n;i++) f[i][0] = i;//若a长度为i,b长度为0,则需要进行i次删除操作
for(int i = 0;i <= m;i++) f[0][i] = i;//若a长度为0,b长度为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] + 1, f[i][j - 1] + 1);
//修改
if(a.charAt(i) == b.charAt(j)) f[i][j] = Math.min(f[i][j], f[i - 1][j - 1]);
else f[i][j] = Math.min(f[i][j], f[i - 1][j - 1] + 1);
}
System.out.println(f[n][m]);
}
}
最喜欢看你的题解了,写得真不错,还有一个重要的原因就是用Java写的,😂
哇hh,谢谢呀
为什么一定修改的是最后一个字母
写的很好
小呆呆,题解写的真好
夸张了