public class Anagram {
public static void main(String[] args) {
String a = "Despera tion-".toLowerCase();
String b = "A Rope Ends It".toLowerCase();
String aSorted = sortStringAlphabetically(a);
String bSorted = sortStringAlphabetically(b);
if(aSorted.equals(bSorted)){
System.out.println("Anagram Found!");
}else{
System.out.println("No anagram was found");
}
}
public static String sortStringAlphabetically(String s) {
char[] ca = s.toCharArray();
int cnt = 0;
ArrayList al = new ArrayList();
for (int i = 0; i < ca.length; i++) {
if (Character.isLetter(ca[cnt]))
al.add(ca[cnt]);
cnt++;
}
Collections.sort(al);
return al.toString();
}
}
作为一个学习者,我编写了这个布尔类型的回文检查器。我的解决方案是创建一个sortStringAlphabetically方法,看起来做了太多的类型转换,即String -> chars[] -> ArrayList -> String,因为我只想比较两个字符串以测试一个短语是否是另一个短语的回文——我能否使用更少的类型转换来完成它?提示:导师的解决方案距离我的尝试相距甚远,可能出于许多原因更好,但我真的在努力掌握所有不同的集合类型。
编辑
以下是原始挑战,我意识到我偏离了解决方案。
http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/en/arrays.html
我的最初反应是简单地遍历数组a,删除与数组b匹配的字符 - 但这似乎要求我在每次迭代时重建数组 - 非常感谢您努力教育我的一切。