Чтобы найти анаграмму двух строк в Java, вы можете использовать различные методы. Вот несколько подходов:
Метод 1: сортировка и сравнение
- Преобразуйте обе строки в массивы символов.
- Сортировка массивов символов.
- Сравните отсортированные массивы, чтобы проверить, равны ли они.
- Если отсортированные массивы равны, строки являются анаграммами.
- Если отсортированные массивы не равны, строки не являются анаграммами.
Вот пример реализации этого метода:
import java.util.Arrays;
public class AnagramChecker {
public static boolean areAnagrams(String str1, String str2) {
// Convert strings to character arrays
char[] arr1 = str1.toCharArray();
char[] arr2 = str2.toCharArray();
// Sort the character arrays
Arrays.sort(arr1);
Arrays.sort(arr2);
// Compare the sorted arrays
return Arrays.equals(arr1, arr2);
}
public static void main(String[] args) {
String str1 = "listen";
String str2 = "silent";
if (areAnagrams(str1, str2)) {
System.out.println("The strings are anagrams.");
} else {
System.out.println("The strings are not anagrams.");
}
}
}
Выход:
The strings are anagrams.
Метод 2: подсчет символов
- Создайте массив размером 26, чтобы представить количество каждого символа алфавита.
- Пройтись по первой строке и увеличить количество каждого встреченного символа.
- Пройти по второй строке и уменьшить количество каждого встреченного символа.
- Если все значения в массиве равны нулю, строки являются анаграммами.
- Если какой-либо счетчик не равен нулю, строки не являются анаграммами.
Вот пример реализации этого метода:
public class AnagramChecker {
public static boolean areAnagrams(String str1, String str2) {
// Create an array to hold character counts
int[] charCount = new int[26];
// Iterate through the first string and increment character counts
for (char c : str1.toCharArray()) {
charCount[c - 'a']++;
}
// Iterate through the second string and decrement character counts
for (char c : str2.toCharArray()) {
charCount[c - 'a']--;
}
// Check if all counts are zero
for (int count : charCount) {
if (count != 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
String str1 = "listen";
String str2 = "silent";
if (areAnagrams(str1, str2)) {
System.out.println("The strings are anagrams.");
} else {
System.out.println("The strings are not anagrams.");
}
}
}
Выход:
The strings are anagrams.