Определить анаграмму

Я делаю упражнение, и мне нужно идентифицировать анаграмму. У меня есть это более или менее, но мне это не удается, потому что я не могу правильно определить прописные и строчные буквы и не знаю, как это сделать очень хорошо.

Я определил метод для помещения слова для анализа в TreeMap, и таким образом я знаю буквы слова и количество раз, которое эта буква содержит, и поэтому я также приказал его сравнить с другими словами, но мне это не удается, потому что оно добавляет количество независимо от того, является ли буква заглавной или строчной.

Код

    static TreeMap getTreemap(String a){
    TreeMap<Character, Integer> mapa = new TreeMap<>();
    for (int i = 0;i<a.length(); i++){
        Integer valor = mapa.get(a.charAt(i));
        if (valor != null){
            mapa.put(a.charAt(i), valor+1);
        }else{
            mapa.put(a.charAt(i), 1);
        }
    }
    return mapa;

}

Моя проблема может возникнуть, когда я сравню слова здесь.

        if (mapaA.equals(mapaB) != true){
        return false;
    }else{
        return true;
    }

Так как он говорит мне, что оба равны, даже если они не соответствуют верхнему или нижнему регистру. Любые предложения, чтобы это исправить? Спасибо.

0
задан 29.12.2016, 16:42
0 ответов

Ты можешь смотреть эту альтернативу

    public static boolean esAnagrama(String s1, String s2) {

        char[] array1 = s1.toCharArray();
        char[] array2 = s2.toCharArray();

        Arrays.sort(array1);
        Arrays.sort(array2);
        return new String(array1).equals(new String(array2));
    }
3
ответ дан 03.12.2019, 17:56

В конце концов я это решил следующего способа.

Вместо того, чтобы работать с Character, я принял решение произойти с String и таким образом смочь использовать постоянную величину String. CASE_INSENSITIVE_ORDER. Таким образом, да отличись между маем и строчные буквы. Я не нашел, как можение делать это с Chars, но этот способ мне показался достаточно более элегантным) препятствуя этому a.charAt (i) + "", просвет).

Код остается таким.

    static TreeMap getTreemap(String a){
    TreeMap<String, Integer> mapa = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
    for (int i = 0;i<a.length(); i++){
        Integer valor = mapa.get(a.charAt(i)+"");
        if (valor != null){
            mapa.put(a.charAt(i)+"", valor+1);
        }else{
            mapa.put(a.charAt(i)+"", 1);
        }
    }
    return mapa;
1
ответ дан 03.12.2019, 17:56

Попытайся с

.compareTo()

вместо

equals ()

0
ответ дан 03.12.2019, 17:56