显示将给定字符串转换为另一个字符串的所有步骤(anagrams)

时间:2014-04-20 22:04:34

标签: java

面试问题 给定两个输入字符串,您只能在字符串中交换两个连续元素。您必须显示将字符串转换为另一个字符串的所有步骤(两个字符串彼此都是 anagrams )。例如。 GUM到MUG

GUM GMU MGU MUG

此代码如下所示。

public static void main(String[] args){
        char a[] = "GUM".toCharArray();
        char b[] = "MUG".toCharArray();
        char temp;
        int n = b.length;
        int j, i = 0;
        while(n > i) {
            j = i;
            System.out.println(a);
            while(a[j] != b[i]) {
                j++;
            }
            while(j > i) {
                temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
                System.out.println(a);
                j--;
            }
            i++;
        }
    }
}

输出如下。

GUM
GMU
MGU
MGU
MUG
MUG

有人可以帮我删除上述代码中的重复步骤/重复步骤吗? 还是还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:2)

你做的正确。只需删除

System.out.println(a);

while(a[j] != b[i])之前

在top while循环之前添加相同的内容。重复的原因 - 您已在最后一次循环中显示更改。

char a[] = "GUM".toCharArray();
        char b[] = "MUG".toCharArray();
        char temp;
        int n = b.length;
        int j, i = 0;

        System.out.println(a);
        while (n > i) {
            j = i;
            while (a[j] != b[i]) {
                j++;
            }
            while (j > i) {
                temp = a[j];
                a[j] = a[j - 1];
                a[j - 1] = temp;
                System.out.println(a);
                j--;
            }
            i++;
        }