【发布时间】:2021-12-24 23:51:30
【问题描述】:
这是我应该写的方法。它需要两个字符串,如果它们是字谜,则应该返回 true。也需要排序。
我不允许使用导入,只是使用一个来查看它是否正确排序。 但是我不明白为什么它仍然返回false?我在某处读到 (ArrayA == ArrayB) 作为比较?
public static boolean anagramCheck (String a, String b) {
String[] conA = a.toLowerCase().split("");
String[] conB = b.toLowerCase().split("");
//sort A
for (int i = 0; i < (conA.length-1); i++) {
for (int j = i + 1; j < conA.length; j++) {
if (conA[i].compareTo(conA[j]) > 0) {
String temp = conA[i];
conA[i] = conA[j];
conA[j] = temp;
}
}
}
//sort B
for (int i = 0; i < conB.length; i++) {
for (int j = i + 1; j < conB.length; j++) {
if (conB[i].compareTo(conB[j]) > 0) {
String temp = conB[i];
conB[i] = conB[j];
conB[j] = temp;
}
}
}
System.out.println(Arrays.toString(conA));
System.out.println(Arrays.toString(conB));
boolean result;
if (conA == conB) {
result = true;
return result;
} else {
result = false;
return result;
}
}
【问题讨论】:
-
No
conA == conB不能作为比较(在这种情况下) -
您必须遍历已排序的数组,并逐个元素检查它们是否相同:
conA[i].equals(conB[i]) -
这能回答你的问题吗? equals vs Arrays.equals in Java 我知道这不是同一个问题。我仍然认为那里的答案也可以达到您的目的吗?
-
是的,解决了它,除了@vincrichaud 所说的。非常感谢。