题目描述
设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:
- 删除一个字符;
- 插入一个字符;
- 将一个字符改为另一个字符。
对任给的两个字符串A和B,计算出将字符串A变换为字符串B所用的最少字符操作次数。
输入
第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于200。
输出
只有一个正整数,为最少字符操作次数。
样例输入
sfdxbqw
gfdgw
样例输出
4
import java.util.Scanner;
public class Main {
static int [][]a = new int[2200][2200];
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
while(cin.hasNext()) {
String s1 = cin.next();
String s2 = cin.next();
int n = s1.length();
int m = s2.length();
for(int i = 1;i<=n;i++)
a[i][0]=i;
for(int i=1;i<=m;i++)
a[0][i]=i;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(s1.charAt(i-1)==s2.charAt(j-1))
a[i][j]=a[i-1][j-1];
else
a[i][j]=Math.min(Math.min(a[i-1][j-1]+1,a[i-1][j]+1),a[i][j-1]+1);
}
}
System.out.println(a[n][m]);
}
}
}