Heim  >  Artikel  >  Java  >  Anagrammprogramm in Java

Anagrammprogramm in Java

PHPz
PHPzOriginal
2024-08-30 16:26:59778Durchsuche

Ein Anagramm ist ein Wort, das durch Ummischen oder Neuanordnen der Buchstaben eines anderen Wortes entsteht; Der entscheidende Punkt bei einem Anagramm ist, dass die Buchstaben nur einmal verwendet werden dürfen und nicht im neuen Wort wiederholt werden sollten. Ein Anagramm ist ein Wort mit der gleichen Anzahl an Buchstaben. Die Zählung ist hier sehr wichtig. Ein Anagrammprogramm in Java kann auf die oben beschriebene Weise verwendet werden, indem die beiden Zeichenfolgen sortiert und verglichen werden. Wenn dies gelingt, bedeutet dies, dass es sich bei der Zeichenfolge um ein Anagramm handelt.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Algorithmus:

Lassen Sie uns einen Blick auf den Algorithmus werfen, mit dem aus einem bestimmten Wort ein Anagramm gebildet wird. Es gibt drei Möglichkeiten, ein Anagramm herauszufinden. Wir werden alle drei Möglichkeiten einzeln erklären. Der grundlegende Algorithmus besteht darin, die Längen der Zeichenfolgen zu überprüfen. Sobald die Länge gleich ist, kann sie sortiert oder gezählt und auf ein Anagramm überprüft werden.

Beispiele für Anagrammprogramme in Java

Das erste, was wir für die gegebenen Strings tun können, ist, beide gegebenen Strings zu sortieren, die überprüft werden sollen, ob es sich um Anagramme handelt. Sobald die Sortierung abgeschlossen ist, kann sie in den sortierten Reihenfolgen verglichen werden. Die Zeitkomplexität für diese Methode beträgt O (n Logn). Der Java-Code hierfür kann wie folgt geschrieben werden:

Beispiel #1

Code:

// JAVA program to validate if two strings are anagrams
import java.io.*;
import java.util.Arrays;
import java.util.Collections;
class Main {
/* Below is a function which checks if the strings are anagram */
static boolean checkAnagram(char[] strana1, char[] strana2)
{
// Finding lengths of strings
int len1 = strana1.length;
int len2 = strana2.length;
// If lengths do not match then they cannot be anagrams
if (len1 != len2)
return false;
// Sort both strings
Arrays.sort(strana1);
Arrays.sort(strana2);
// Comparing the strings which are sorted earlier
for (int i = 0; i < len1; i++)
if (strana1[i] != strana2[i])
return false;
return true;
}
/* Main program to test Anagram*/
public static void main (String args[])
{
char strana1[] = { 't', 'e', 's', 't' };
char strana2[] = { 't', 't', 'e', 'w' };
if (checkAnagram(strana1, strana2))
System.out.println("The strings to be checked are" + " anagram of each other");
else
System.out.println("The strings to be checked are not" + " anagram of each other");
}
}

Das obige Programm prüft zunächst die Länge beider gegebener Strings. Wenn die Zeichenfolgen nicht die gleiche Länge haben, wird „false“ zurückgegeben. Nur wenn die Längen beider Zeichenfolgen gleich sind, schreitet das Programm weiter voran. Mithilfe der Array-Sortierfunktion werden die Zeichenfolgen in zwei Arrays sortiert. Sobald die Array-Sortierfunktion für beide Zeichenfolgen verwendet wird, werden die Zeichenfolgen verglichen und jeder Buchstabe wird in einer Schleife verglichen. Wenn die for-Schleife erfolgreich ist und alle Buchstaben in beiden Zeichenfolgen gleich sind, ist die Ausgabe ein Anagramm. Auch wenn ein Buchstabe nicht übereinstimmt, wird „false“ zurückgegeben. Das Hauptprogramm prüft hier die Zeichenfolgen und zeigt an, ob die Zeichenfolge ein Anagramm ist oder nicht, abhängig vom Ergebnis, das von der checkAnagram-Funktion zurückgegeben wird.

Ausgabe:

Anagrammprogramm in Java

Wenn wir die Eingabe in „t“, „t“, „e“, „s“ anstelle von „w“ ändern, sieht die Ausgabe wie folgt aus.

Ausgabe:

Anagrammprogramm in Java

Beispiel #2

Diese Methode kann verwendet werden, wenn die zu validierenden Zeichenfolgen klein sind. Bei dieser Methode wird davon ausgegangen, dass die gespeicherten Zeichen 8-Bit-Zeichen sind und möglicherweise 256 Zeichen gespeichert werden können. Bei dieser Methode können Sie zunächst die Zeichenfolgen mithilfe der Zählarrays mit der Größe 256 zählen und alle erforderlichen Werte im Zählarray mit 0 initialisieren. Durchlaufen Sie dieses Array und erhöhen Sie die Anzahl beim Durchlaufen. Sobald dies erledigt ist, können Sie die Zählarrays vergleichen. Wenn die Anzahl gleich ist, ist das zurückgegebene Ergebnis wahr.

Code:

import java.io.*;
import java.util.*;
class ANA {
static int NO_CHARS = 256;
/* Below is a function which checks if the strings are anagram */
static boolean isAnagram(char strana1[], char strana2[])
{
// Here we create two arrays and initialize it to 0
int cnt1[] = new int[NO_CHARS];
Arrays.fill(cnt1, 0);
int cnt2[] = new int[NO_CHARS];
Arrays.fill(cnt2, 0);
int i;
// For every character in input strings, increment the count
for (i = 0; i < strana1.length && i < strana2.length;
i++) {
cnt1[strana1[i]]++;
cnt2[strana2[i]]++;
}
// Checking If both strings are of different length
if (strana1.length != strana2.length)
return false;
// Compare count arrays
for (i = 0; i < NO_CHARS; i++)
if (cnt1[i] != cnt2[i])
return false;
return true;
}
/* Main program to test to check if string is Anagram or not*/
public static void main(String args[])
{
char strana1[] = ("silent").toCharArray();
char strana2[] = ("lisent").toCharArray();
if (isAnagram(strana1, strana2))
System.out.println("The strings to be checked are" + " anagram of each other");
else
System.out.println("The strings to be checked are not" + " anagram of each other");
}
}

Ausgabe:

Anagrammprogramm in Java

Beispiel #3

Anagramme können mithilfe der StringBuilder-Funktion in Java überprüft werden. Wir können die Methode deletechartAt() verwenden, um alle Zeichen zu löschen, die in der zweiten Zeichenfolge vorhanden sind.

Code:

public class Main
{
static void findAnagram(String str1, String str2)
{
String copystr1 = str1.replaceAll( " ", "").toLowerCase();
String copystr2 = str2.replaceAll(" ", "").toLowerCase();
//Setting the initial status to true
boolean flag = true;
if(copystr1.length() != copystr2.length())
{
//If copystr1 and copystr2 do not have same length then set the flag to false
flag = false;
}
else
{
//changing copystr1 to char array
char[] str1Array = copystr1.toCharArray();
//Creating StringBuilder from copystr2
StringBuilder sb = new StringBuilder(copystr2);
//Validating if  each character of str1Array is present in string builder
for (char c : str1Array)
{
int index = sb.indexOf(""+c);
if (index != -1)
{
sb = sb.deleteCharAt(index);
}
else
{
//If each character is not present, setting flag to false and breaking the loop
flag = false;
break;
}
}
}
if(flag)
{
System.out.println(str1+" and "+str2+" are anagrams");
}
else
{
System.out.println(str1+" and "+str2+" are not anagrams");
}
}
public static void main(String[] args)
{
findAnagram("Silent", "Listen");
}
}

Das Programm hier verwendet das Flag und ein String-Builder-Modul, das beim Löschen zusätzlicher Zeichen hilft.

Ausgabe:

Anagrammprogramm in Java

Das obige ist der detaillierte Inhalt vonAnagrammprogramm in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Sondernummer in JavaNächster Artikel:Sondernummer in Java