Найти в Дзене
DEBAGanov

Java 451. Напишите программу на Java, чтобы проверить, являются ли две строки анаграммой или нет?

Для проверки, являются ли две строки анаграммой, необходимо убедиться, что обе строки содержат одни и те же символы в одинаковых количествах. Вот пример кода на Java, который реализует такую проверку: public static boolean checkAnagram(String str1, String str2) {
if (str1.length() != str2.length()) { // если длины строк не равны, они не могут быть анаграммами return false;
}
int[] charCounts = new int[256]; // создаем массив для всех символов ASCII таблицы for (int i = 0; i < str1.length(); i++) {
char c = str1.charAt(i);
charCounts[c]++; // увеличиваем счетчик в массиве для символов первой строки }
for (int i = 0; i < str2.length(); i++) {
char c = str2.charAt(i);
if (--charCounts[c] < 0) { // уменьшаем счетчик в массиве для символов второй строки и проверяем, что он не станет отрицательным return false;
}
}
return true;
} В этом примере мы сначала проверяем, что длины двух строк str1

Для проверки, являются ли две строки анаграммой, необходимо убедиться, что обе строки содержат одни и те же символы в одинаковых количествах.

Вот пример кода на Java, который реализует такую проверку:

public static boolean checkAnagram(String str1, String str2) {
if (str1.length() != str2.length()) { // если длины строк не равны, они не могут быть анаграммами return false;
}
int[] charCounts = new int[256]; // создаем массив для всех символов ASCII таблицы
for (int i = 0; i < str1.length(); i++) {
char c = str1.charAt(i);
charCounts[c]++; // увеличиваем счетчик в массиве для символов первой строки }
for (int i = 0; i < str2.length(); i++) {
char c = str2.charAt(i);
if (--charCounts[c] < 0) { // уменьшаем счетчик в массиве для символов второй строки и проверяем, что он не станет отрицательным return false;
}
}
return true;
}

В этом примере мы сначала проверяем, что длины двух строк str1 и str2 равны. Если длины не равны, то мы сразу возвращаем значение false, потому что строки не могут быть анаграммами.

Затем мы создаем массив charCounts длиной 256, где каждый элемент соответствует одному из символов ASCII таблицы. Мы проходим по всем символам первой строки и увеличиваем значение соответствующего элемента массива charCounts.

Затем мы снова проходим по всем символам второй строки, уменьшая значение элемента массива charCounts для каждого символа. Если значение становится отрицательным, то мы сразу возвращаем значение false, потому что строки не могут быть анаграммами.

Если все символы второй строки были успешно проверены, то мы возвращаем значение true.

Заметьте, что данная реализация работает только для символов ASCII таблицы. Если встречаются символы расширенной таблицы Unicode, то необходимо использовать более продвинутую реализацию.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov