Для задачи Edit Distance https://www.geeksforgeeks.org/edit-distance-dp-5/, Я разработал то, что мне кажется, нерекурсивный подход без dp, в O (n * m). Я дал код ниже. Кто-нибудь может указать какой-то особый случай, когда он может не работать?
public static void main(String args[]){
String str1="abc";
String str2="wxyz";
int m=str1.length();
int n=str2.length();
int count=0;
if(m==n){
for(int i=0;i<m;i++){
if(str1.charAt(i)!=str2.charAt(i))
count++;
}
}
else if(m<n){
int[] arr=new int[n];
count=edit(str1,str2,arr);
}
else{
int[] arr=new int[m];
count=edit(str2,str1,arr);
}
System.out.println(count);
}
public static int edit(String s1,String s2,int[] arr){
int j=0,count=0;
for(int i=0;i<s1.length();i++){
for(int k=j;k<s2.length();k++){
if(s1.charAt(i)==s2.charAt(k)){
arr[k]=-1;
j=k+1;
break;
}
}
/*for(int k=0;k<arr.length;k++)
System.out.print(arr[k]+" ");
System.out.println();*/
}
for(int i=0;i<arr.length;i++){
if(arr[i]==0)
count++;
}
return count;
}