面试问题 给定两个输入字符串,您只能在字符串中交换两个连续元素。您必须显示将字符串转换为另一个字符串的所有步骤(两个字符串彼此都是 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
有人可以帮我删除上述代码中的重复步骤/重复步骤吗? 还是还有其他更好的方法吗?
答案 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++;
}