Проверка анаграммы в Java — код, вывод и объяснение
Две строки являются анаграммами, если они содержат одни и те же символы, но в разном порядке.
Пример 1: проверка двух строк на анаграммы
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String str1 = "Race";
String str2 = "Care";
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
// 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.");
}
}
}
Вывод:
race and care are anagram.
У нас две строки str1 и str2. Мы проверяем, являются ли str1 и str2 анаграммами.
Сначала мы приводим строки к нижнему регистру. Это нужно потому, что Java чувствительна к регистру: R и r для неё — разные символы.
Здесь:
str1.toCharArray()— преобразует строку в массивchar;Arrays.sort()— сортирует оба массива символов;Arrays.equals()— проверяет, равны ли отсортированные массивы.
Если отсортированные массивы равны, значит строки — анаграммы.
Примечание
Метод Arrays.sort() сравнивает два символа по ASCII-значению, а R и r не равны. Поэтому строки нужно приводить к одному регистру.
Пример 2: ввод строк от пользователя и проверка на анаграммы
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();
}
}
Вывод:
Enter first String: Race
Enter second String: Care
Race and Care are anagram.
В примере выше мы используем Scanner для получения ввода от пользователя. Затем проверяем, являются ли введённые строки анаграммами.