Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示将给定字符串转换为另一个字符串(字谜)的所有步骤_Java - Fatal编程技术网

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

Java 显示将给定字符串转换为另一个字符串(字谜)的所有步骤,java,Java,面试问题 给定两个输入字符串,您只能交换字符串中的两个连续元素。您必须显示将一个字符串转换为另一个字符串的所有步骤(两个字符串都是彼此的字谜)。例如,口香糖到杯子 口香糖 GMU MGU 马克杯 代码如下所示 public static void main(String[] args){ char a[] = "GUM".toCharArray(); char b[] = "MUG".toCharArray(); char temp;

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

口香糖 GMU MGU 马克杯

代码如下所示

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
有人能帮我删除上面代码中重复的步骤吗?
或者还有其他更好的方法吗?

您做得正确。只需删除

System.out.println(a);
在(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++;
        }

谢谢你也发了这个。看起来不太正确。如果这两个字符串是ABBCD”和“DCBBA”?@SpiderPig-它也适用于该输入,并且没有任何重复。。。