I det här exemplet kommer vi att kontrollera om två strängar är anagram eller inte i Java.
För att förstå detta exempel bör du ha kunskap om följande Java-programmeringsämnen:
- Java-sträng
- Java Arrays
Två strängar sägs vara anagram om vi kan bilda en sträng genom att ordna tecken i en annan sträng. Till exempel Race and Care . Här kan vi bilda ras genom att ordna karaktärerna i Care.
Exempel 1: Java-program för att kontrollera om två strängar är anagram
import java.util.Arrays; class Main ( public static void main(String() args) ( String str1 = "java"; String str2 = "vaaj"; // check if length is same if(str1.length() == str2.length()) ( // convert strings to char array char() charArray1 = str1.toCharArray(); char() charArray2 = str2.toCharArray(); // sort the char array Arrays.sort(charArray1); Arrays.sort(charArray2); // if sorted char arrays are same // then the string is anagram boolean result = Arrays.equals(charArray1, charArray2); if(result) ( System.out.println(str1 + " and " + str2 + " are anagram."); ) else ( System.out.println(str1 + " and " + str2 + " are not anagram."); ) ) else ( System.out.println(str1 + " and " + str2 + " are not anagram."); ) ) )
Produktion
Java och Vaaj är anagram.
I Java har vi två strängar som heter str1 och str2. Här kontrollerar vi om str1 och str2 är anagram.
Här,
- str1.toCharArray () - konverterar strängen till en char-array
- Arrays.sort () - sorterar båda char-arrays
- Arrays.equal () - kontrollerar om den sorterade char-matrisen är lika
Om sorterade matriser är lika är strängarna anagram.
Obs! Här är exemplet skiftlägeskänsligt. Det vill säga Java och Java är inte anagram. Det beror på att man Arrays.sort()
jämför två tecken med ASCII-värde. Och ASCII-värdet för J och j är olika.
Exempel 2: Ta strängingångar från användare och kontrollera om strängarna är anagram
import java.util.Arrays; import java.util.Scanner; class Main ( public static void main(String() args) ( // create an object of Scanner class Scanner input = new Scanner(System.in); // take input from users System.out.print("Enter first String: "); String str1 = input.nextLine(); System.out.print("Enter second String: "); String str2 = input.nextLine(); // check if length is same if(str1.length() == str2.length()) ( // convert strings to char array char() charArray1 = str1.toCharArray(); char() charArray2 = str2.toCharArray(); // sort the char array Arrays.sort(charArray1); Arrays.sort(charArray2); // if sorted char arrays are same // then the string is anagram boolean result = Arrays.equals(charArray1, charArray2); if(result) ( System.out.println(str1 + " and " + str2 + " are anagram."); ) else ( System.out.println(str1 + " and " + str2 + " are not anagram."); ) ) else ( System.out.println(str1 + " and " + str2 + " are not anagram."); ) input.close(); ) )
Produktion
Ange första sträng: Race Ange andra sträng: Care Race och Care är anagram.
I exemplet ovan har vi använt Scanner-klassen för att ta in input från användaren. Här kontrollerade vi om strängarna från användarna är anagram.