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 - учитывая, что я просто хочу сравнить 2 строки, чтобы проверить, является ли одна фраза анаграммойдругой - мог бы я сделать это с меньшим количеством жонглирования шрифтами?
ps Решение для репетиторов находилось в миле от моей попытки, и, вероятно, намного лучше по многим причинам - но я действительно пытаюсь справиться с этим.на все различные типы коллекций.
http://www.home.hs -karlsruhe.de / ~ pach0003 / informatik_1 / aufgaben / en / doc / src-html / de / hska / java / упражнения / массивы / Anagram.html # line.18
EDIT
FTW - вот оригинальная задача, я понимаю, что отошел от решения.
http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/en/arrays.html
Моей начальной реакцией на колено было просто сработать через массив a, выбив те символы, которые совпадают с массивом b - но этоказалось, потребовал от менясоздавайте массив на каждой итерации - большое спасибо за все ваши усилия по обучению меня.