Anagramm in Java
- Finden Sie Anagramm in Java
- Finden Sie Anagramme in Java mit XOR
- Finden Sie Anagramme in Java mit HashMap
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.
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