我尝试编写一个程序来检测给定 2 个字符串的字谜。
我的方法是将两个字符串都转换为 char 数组,然后在比较它们之前对它们进行排序。
我知道我可以使用 sort()
函数,但我不想将任何导入用于训练目的。
问题是我希望我的程序在扫描字谜时忽略空白。 在当前版本中,输出是这样的: (三角形,相关)---> true (三角,相关)---> false
虽然两者都应该是正确的。
如有任何帮助,我将不胜感激!
这是我的代码,(请忽略我的评论):
public static boolean anagramCheck(String a, String b) {
boolean r = true;
// In Char Arrays umwandeln /
char[] Ca = a.toCharArray();
char[] Cb = b.toCharArray();
// Laengen Abfrage
int L1 = Ca.length;
int L2 = Cb.length;
// Erste For-Schleife
for (int i = 0; i < L1; i++) {
for (int j = i + 1; j < L1; j++) {
if (Ca[j] < Ca[i]) {
char temp = Ca[i];
Ca[i] = Ca[j];
Ca[j] = temp;
}
}
}
// Zweite For-schleife
for (int i = 0; i < L2; i++) {
for (int j = i + 1; j < L2; j++) {
if (Cb[j] < Cb[i]) {
char temp = Cb[i];
Cb[i] = Cb[j];
Cb[j] = temp;
}
}
}
// Char Arrays zu Strings
String S1 = String.valueOf(Ca);
String S2 = String.valueOf(Cb);
// Vergleich und Ausgabe
if (S1.compareTo(S2) == 0) {
return r;
}
else {
r = false;
return r;
}
}
}
最佳答案
String.replace(String, String)
是非正则表达式替换方法。
所以删除所有空格:
String S1 = String.valueOf(Ca).replace(" ", "");
String S2 = String.valueOf(Cb).replace(" ", "");
在 a
和 b
上执行此操作会更好。
https://stackoverflow.com/questions/70087629/