Анаграма е дума или фраза, образувана чрез пренареждане на буквите на различна дума или фраза, като обикновено се използват всички оригинални букви точно веднъж.

Сега как можем да разберем дали две думи са анаграма една на друга? Дадени са два низа, определете дали низовете са анаграми един на друг. Просто две думи са анаграми една на друга, ако съдържат едни и същи букви.

Примери „котка“, „действие“ → вярно

„котка“, „куче“ → невярно

„състезателна кола“, „aaccrres“ → false

Моят подход за решаване на този вид проблем е следният:

  • Използвана карта за съхраняване на низови елементи.
  • Преминете през strA, вземете хартата на strA по харта и добавете техния герой към картата.
  • Преминете към strB и проверете дали символът strB съществува в картата, ако да, извадете текущите стойности на символа с единица.

Тъй като анаграмните думи имат еднакъв брой знаци, крайните стойности на картата трябва да са нули.

Моля, проверете моето решение с leetcode

public static  boolean isAnagram(String s, String t) {
         
  HashMap<Character,Integer> map= new HashMap<Character, Integer>();
         
         if (s.length()!=t.length()) return false;
         
         for (int i=0;i<s.length();i++){
                 if (!map.containsKey(s.charAt(i))  )
              {
                     map.put(s.charAt(i),1);
                  }
                  else{
                      map.put(s.charAt(i),map.get(s.charAt(i))+1);
                    }                    
              }
         
         for (int i=0;i<t.length();i++){
            if (!map.containsKey(t.charAt(i)))
               {
                return false;
                 }
             else{
                 int value=map.get(t.charAt(i));
                 value=value-1;
                 map.put(t.charAt(i),value);
               }
         }
       
         for (Character keys : map.keySet())  
          {
            System.out.println(keys + ":"+ map.get(keys));
            if (map.get(keys)!=0) return false;
          }
   return true;
    
     }