在最小的操作中将str1带到str2

时间:2018-01-10 15:27:27

标签: java

我找到了老师的工作。 我需要获得两个字符串str1和str2,并在最小的操作中将str1引入str2。 我能够编写一个代码并且它工作得很好,但根据老师的要求,我并没有真正成功。 他希望方法调用“public static int edit(String str1,String str2)”

我做的方法是: public static int edit(String str1,String str2,int m,int n)

我不能想到没有使用m和n的解决方案,我很乐意提供帮助。

    public  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;
}

static int edit(String str1 , String str2)
{
    // If first string is empty, the only option is to
// insert all characters of second string into first
if (str1.length() == 0) return str1.length();

// If second string is empty, the only option is to
// remove all characters of first string
if (str1.length()-1 == 0) return str1.length();

// If last characters of two strings are same, nothing
// much to do. Ignore last characters and get count for
// remaining strings.
if (str1.charAt(str1.length()-1) == str2.charAt(str2.length()-1))
    return edit(str1, str2, str1.length, str2.length());

// 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 ( edit(str1, str2, str1.length, str2.length()-1), // Insert
                edit(str1, str2, str1.length-1, str2.length()), // Remove
                edit(str1, str2, str1.length-1, str2.length()-1) // Replace                  
            );
}

1 个答案:

答案 0 :(得分:0)

为什么不写一个新方法?

public static int edit(String str1, String str2) {
    return edit(str1, str2, str1.length(), str2.length());
}

这有时被称为驱动程序方法。