Java 显示将给定字符串转换为另一个字符串(字谜)的所有步骤
面试问题 给定两个输入字符串,您只能交换字符串中的两个连续元素。您必须显示将一个字符串转换为另一个字符串的所有步骤(两个字符串都是彼此的字谜)。例如,口香糖到杯子 口香糖 GMU MGU 马克杯 代码如下所示Java 显示将给定字符串转换为另一个字符串(字谜)的所有步骤,java,Java,面试问题 给定两个输入字符串,您只能交换字符串中的两个连续元素。您必须显示将一个字符串转换为另一个字符串的所有步骤(两个字符串都是彼此的字谜)。例如,口香糖到杯子 口香糖 GMU MGU 马克杯 代码如下所示 public static void main(String[] args){ char a[] = "GUM".toCharArray(); char b[] = "MUG".toCharArray(); char temp;
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-它也适用于该输入,并且没有任何重复。。。