Neste exemplo, vamos verificar se duas strings são anagramas ou não em Java.
Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação Java:
- Java String
- Arrays Java
Duas strings são consideradas anagramas se pudermos formar uma string organizando os caracteres de outra string. Por exemplo, Race and Care . Aqui, podemos formar Race organizando os personagens de Care.
Exemplo 1: programa Java para verificar se duas strings são anagramas
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."); ) ) )
Resultado
Java e Vaaj são anagramas.
Em Java, temos duas strings chamadas str1 e str2. Aqui, estamos verificando se str1 e str2 são anagramas.
Aqui,
- str1.toCharArray () - converte a string em uma matriz char
- Arrays.sort () - classifica as duas matrizes char
- Arrays.equal () - verifica se a matriz classificada de char são iguais
Se as matrizes classificadas forem iguais, as strings serão anagramas.
Nota : aqui, o exemplo diferencia maiúsculas de minúsculas. Ou seja, Java e java não são anagramas. É porque o Arrays.sort()
compara dois caracteres com valor ASCII. E o valor ASCII de J e j são diferentes.
Exemplo 2: pegue entradas de string de usuários e verifique se as strings são anagramas
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(); ) )
Resultado
Digite a primeira String: Race Digite a segunda String: Care Race e Care são anagramas.
No exemplo acima, usamos a classe Scanner para obter a entrada do usuário. Aqui, verificamos se as strings fornecidas pelos usuários são anagramas.