/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
// A Naive recursive Java program to find minimum number
// operations to convert str1 to str2
class Ideone {
static int min(int x, int y, int z)
{
if (x <= y && x <= z)
return x;
if (y <= x && y <= z)
return y;
else
return z;
}
{
// If first string is empty, the only option is to
// insert all characters of second string into first
if (m == 0)
return n;
// If second string is empty, the only option is to
// remove all characters of first string
if (n == 0)
return m;
// If last characters of two strings are same, nothing
// much to do. Ignore last characters and get count for
// remaining strings.
if (str1.charAt(m - 1) == str2.charAt(n - 1))
return editDist(str1, str2, m - 1, n - 1);
// If last characters are not same, consider all three
// operations on last character of first string, recursively
// compute minimum cost for all three operations and take
// minimum of three values.
return 1 + min(editDist(str1, str2, m, n - 1), // Insert
editDist(str1, str2, m - 1, n), // Remove
editDist(str1, str2, m - 1, n - 1) // Replace
);
}
public static void main
(String args
[]) {
System.
out.
println(editDist
(str1, str2, str1.
length(), str2.
length())); }
}
/*This code is contributed by Rajat Mishra*/
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovLyBBIE5haXZlIHJlY3Vyc2l2ZSBKYXZhIHByb2dyYW0gdG8gZmluZCBtaW5pbXVtIG51bWJlciAKLy8gb3BlcmF0aW9ucyB0byBjb252ZXJ0IHN0cjEgdG8gc3RyMiAKY2xhc3MgSWRlb25lIHsgCglzdGF0aWMgaW50IG1pbihpbnQgeCwgaW50IHksIGludCB6KSAKCXsgCgkJaWYgKHggPD0geSAmJiB4IDw9IHopIAoJCQlyZXR1cm4geDsgCgkJaWYgKHkgPD0geCAmJiB5IDw9IHopIAoJCQlyZXR1cm4geTsgCgkJZWxzZQoJCQlyZXR1cm4gejsgCgl9IAoKCXN0YXRpYyBpbnQgZWRpdERpc3QoU3RyaW5nIHN0cjEsIFN0cmluZyBzdHIyLCBpbnQgbSwgaW50IG4pIAoJeyAKCQkvLyBJZiBmaXJzdCBzdHJpbmcgaXMgZW1wdHksIHRoZSBvbmx5IG9wdGlvbiBpcyB0byAKCQkvLyBpbnNlcnQgYWxsIGNoYXJhY3RlcnMgb2Ygc2Vjb25kIHN0cmluZyBpbnRvIGZpcnN0IAoJCWlmIChtID09IDApIAoJCQlyZXR1cm4gbjsgCgoJCS8vIElmIHNlY29uZCBzdHJpbmcgaXMgZW1wdHksIHRoZSBvbmx5IG9wdGlvbiBpcyB0byAKCQkvLyByZW1vdmUgYWxsIGNoYXJhY3RlcnMgb2YgZmlyc3Qgc3RyaW5nIAoJCWlmIChuID09IDApIAoJCQlyZXR1cm4gbTsgCgoJCS8vIElmIGxhc3QgY2hhcmFjdGVycyBvZiB0d28gc3RyaW5ncyBhcmUgc2FtZSwgbm90aGluZyAKCQkvLyBtdWNoIHRvIGRvLiBJZ25vcmUgbGFzdCBjaGFyYWN0ZXJzIGFuZCBnZXQgY291bnQgZm9yIAoJCS8vIHJlbWFpbmluZyBzdHJpbmdzLiAKCQlpZiAoc3RyMS5jaGFyQXQobSAtIDEpID09IHN0cjIuY2hhckF0KG4gLSAxKSkgCgkJCXJldHVybiBlZGl0RGlzdChzdHIxLCBzdHIyLCBtIC0gMSwgbiAtIDEpOyAKCgkJLy8gSWYgbGFzdCBjaGFyYWN0ZXJzIGFyZSBub3Qgc2FtZSwgY29uc2lkZXIgYWxsIHRocmVlIAoJCS8vIG9wZXJhdGlvbnMgb24gbGFzdCBjaGFyYWN0ZXIgb2YgZmlyc3Qgc3RyaW5nLCByZWN1cnNpdmVseSAKCQkvLyBjb21wdXRlIG1pbmltdW0gY29zdCBmb3IgYWxsIHRocmVlIG9wZXJhdGlvbnMgYW5kIHRha2UgCgkJLy8gbWluaW11bSBvZiB0aHJlZSB2YWx1ZXMuIAoJCXJldHVybiAxICsgbWluKGVkaXREaXN0KHN0cjEsIHN0cjIsIG0sIG4gLSAxKSwgLy8gSW5zZXJ0IAoJCQkJCWVkaXREaXN0KHN0cjEsIHN0cjIsIG0gLSAxLCBuKSwgLy8gUmVtb3ZlIAoJCQkJCWVkaXREaXN0KHN0cjEsIHN0cjIsIG0gLSAxLCBuIC0gMSkgLy8gUmVwbGFjZSAKCQkJCQkpOyAKCX0gCgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgCgl7IAoJCVN0cmluZyBzdHIxID0gImhvcnNlIjsgCgkJU3RyaW5nIHN0cjIgPSAicm9zIjsgCgoJCVN5c3RlbS5vdXQucHJpbnRsbihlZGl0RGlzdChzdHIxLCBzdHIyLCBzdHIxLmxlbmd0aCgpLCBzdHIyLmxlbmd0aCgpKSk7IAoJfSAKfSAKLypUaGlzIGNvZGUgaXMgY29udHJpYnV0ZWQgYnkgUmFqYXQgTWlzaHJhKi8K