Anagramm in Java

MD Aminul Islam 12 Oktober 2023
  1. Finden Sie Anagramm in Java
  2. Finden Sie Anagramme in Java mit XOR
  3. Finden Sie Anagramme in Java mit HashMap
Anagramm in Java

Wenn du gerne mit Wörtern spielst, kennst du vielleicht schon den Begriff Anagramm. Wenn zwei Zeichenfolgen dasselbe Zeichen enthalten, aber in einem anderen Wort, werden sie Anagramme voneinander genannt.

Wenn es zum Beispiel zwei Wörter gibt, Rasse und Pflege, dann werden Sie, wenn Sie sie betrachten, sehen, dass sie dasselbe Zeichen enthalten, aber in einer anderen Reihenfolge.

So können wir die Wörter Rasse und Pflege Anagramme zueinander nennen.

In diesem Artikel werden wir sehen, wie wir herausfinden können, ob zwei Wörter Anagramme sind oder nicht. Wir werden das Thema mit Beispielen und Erklärungen behandeln, um das Thema zu vereinfachen.

Finden Sie Anagramm in Java

In unserem Beispiel unten haben wir gezeigt, wie wir überprüfen können, ob die beiden gegebenen Sätze Anagramme sind. Unser Beispielcode sieht wie folgt aus:

// importing necessary packages
import java.util.Arrays;

public class JavaAnagram {
  static void MatchAnagram(String str1, String str2) {
    String Str_1 = str1.replaceAll("\\s", ""); // Removing the spaces from the first string
    String Str_2 = str2.replaceAll("\\s", ""); // Removing the spaces from the second string
    boolean Status = true;
    if (Str_1.length() != Str_2.length()) { // Checking the length of two string
      Status = false;
    } else {
      // Converting all the characters to lower case and putting the chars of the string into a
      // character
      char[] StringArray1 = Str_1.toLowerCase().toCharArray();
      char[] StringArray2 = Str_2.toLowerCase().toCharArray();
      // Shorting the array.
      Arrays.sort(StringArray1);
      Arrays.sort(StringArray2);
      // Matching both array.
      Status = Arrays.equals(StringArray1, StringArray2);
    }
    if (Status) {
      System.out.println(Str_1 + " and " + Str_2 + " = Anagrams");
    } else {
      System.out.println(Str_1 + " and " + Str_2 + " = Anagrams");
    }
  }

  public static void main(String[] args) {
    MatchAnagram("Keep", "Peek");
    MatchAnagram("Race", "Care");
  }
}

Wir haben bereits den Zweck jeder Zeile befohlen. Die wichtigsten Schritte, die wir in den Programmen befolgen, sind:

  • Zuerst haben wir alle Leerzeichen aus dem Satz entfernt.
  • Dann haben wir überprüft, ob die beiden Sätze gleich lang sind.
  • Bei gleicher Länge haben wir zunächst alle Zeichen in Kleinbuchstaben umgewandelt.
  • Nun haben wir alle Zeichen dieser beiden Sätze in zwei verschiedene Arrays genommen und das Array sortiert.
  • Zuletzt haben wir abgeglichen, ob beide Arrays dasselbe Element enthalten.
  • Wenn sie übereinstimmen, sind beide Sätze Anagramme.

Nachdem Sie das Beispiel ausgeführt haben, sehen Sie die folgende Ausgabe in Ihrer Konsole:

Keep and Peek = anagrams
Race and Care = anagrams

Finden Sie Anagramme in Java mit XOR

In unserem Beispiel unten veranschaulichen wir, wie wir Anagramme in Java mit bitweisem XOR finden können. Der Code wird wie folgt sein:

public class JavaAnagram {
  public static void main(String[] args) {
    // Declaring two string
    String STR_1 = "Race";
    String STR_2 = "Care";

    if (AnagramChecking(STR_1, STR_2))
      System.out.println(STR_1 + " & " + STR_2 + " = Anagrams");
    else
      System.out.println(STR_1 + " & " + STR_2 + " = Not Anagrams");
  }

  public static boolean AnagramChecking(String STR_1, String STR_2) {
    // Remove all white spaces, convert to lower case & character array
    char[] StringArr1 = STR_1.replaceAll("\\s", "").toLowerCase().toCharArray();
    char[] StringArr2 = STR_2.replaceAll("\\s", "").toLowerCase().toCharArray();
    if (StringArr1.length != StringArr2.length) // Matching the length
      return false;

    int DoXOR = 0;

    for (int i = 0; i < StringArr1.length; i++) // Performing XOR operation
    {
      DoXOR ^= StringArr1[i] ^ StringArr2[i];
    }

    return DoXOR == 0 ? true : false;
  }
}

Wir haben den Zweck jeder Zeile angegeben. Nachdem Sie den Beispielcode ausgeführt haben, sehen Sie die folgende Ausgabe in Ihrer Konsole:

Race & Care = Anagrams

Finden Sie Anagramme in Java mit HashMap

In unserem Beispiel unten zeigen wir, wie wir mit HashMap Anagramme in Java finden können. Der Code wird wie folgt sein:

// importing necessary packages
import java.util.HashMap;

public class JavaAnagram {
  public static void main(String[] args) {
    // Declaring two string
    String STR_1 = "Race";
    String STR_2 = "Care";
    if (AnagramCheck(STR_1.toLowerCase(), STR_2.toLowerCase()))
      System.out.println(STR_1 + " & " + STR_2 + " = Anagrams");
    else
      System.out.println(STR_1 + " & " + STR_2 + " = Not Anagrams");
  }

  public static boolean AnagramCheck(String STR_1, String STR_2) {
    if (STR_1.length() != STR_2.length()) // Matching the length
      return false;
    HashMap<Character, Integer> MyMap = new HashMap<Character, Integer>(); // Declaring a hashmap
    for (int i = 0; i < STR_1.length(); i++) {
      char ch = STR_1.charAt(i);
      if (MyMap.containsKey(ch))
        MyMap.put(ch, MyMap.get(ch) + 1);
      else
        MyMap.put(ch, 1);
    }
    for (int i = 0; i < STR_2.length(); i++) {
      char ch = STR_2.charAt(i);
      if (MyMap.containsKey(ch)) {
        if (MyMap.get(ch) == 1)
          MyMap.remove(ch);
        else
          MyMap.put(ch, MyMap.get(ch) - 1);
      } else
        return false;
    }
    if (MyMap.size() > 0)
      return false;
    return true;
  }
}

Nachdem Sie den Beispielcode ausgeführt haben, sehen Sie die folgende Ausgabe in Ihrer Konsole:

Race & Care = Anagrams

Bitte beachten Sie, dass die hier freigegebenen Codebeispiele in Java sind und Sie Java in Ihrer Umgebung installieren müssen, wenn Ihr System kein Java enthält.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Verwandter Artikel - Java Algorithm