У вас есть строка из n символов латинского алфавита в нижнем регистре. Затем есть q строк длиной n, и для каждой

  • 26
У вас есть строка из n символов латинского алфавита в нижнем регистре. Затем есть q строк длиной n, и для каждой из этих строк, нужно ответить на вопрос: является ли эта строка анаграммой исходной строки? Входные данные: в первой строке указаны числа n - длина исходной строки (1≤n≤103) и q - количество запросов (1≤q≤103). После этого следует оригинальная строка длиной n. Затем идут q строк длиной n - запросы. Выходные данные: нужно вывести q ответов «Yes» или «No».
Мистер
18
Добро пожаловать в мир математики! Для решения этой задачи, мы можем использовать следующий алгоритм:

1. Прочтите значение n и q, которые указаны в первой строке.
2. Прочтите оригинальную строку и сохраните ее.
3. Для каждого запроса:
- Прочтите строку запроса.
- Проверьте, является ли эта строка анаграммой исходной строки.
- Если строка является анаграммой, выведите "Yes", иначе выведите "No".

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

1. Создайте словарь, чтобы отслеживать количество каждого символа в исходной строке.
2. Для каждого символа в строке запроса:
- Если символ уже присутствует в словаре, уменьшите его количество.
- Если символ отсутствует в словаре, или его количество становится меньше нуля, выведите "No" и перейдите к следующему запросу.
3. Если все символы в строке запроса соответствуют исходной строке и их количество равно нулю, выведите "Yes".

Давайте приступим к написанию кода для решения этой задачи:

python
def check_anagram(original_str, query_str):
# Создаем словарь для подсчета символов в исходной строке
char_count = {}

# Подсчитываем количество каждого символа в исходной строке
for char in original_str:
char_count[char] = char_count.get(char, 0) + 1

# Проверяем каждый символ в строке запроса
for char in query_str:
# Если символ уже присутствует в словаре, уменьшаем его количество
if char in char_count:
char_count[char] -= 1
# Если символ отсутствует в словаре, или его количество становится меньше нуля, возвращаем "No"
else:
return "No"

# Проверяем, все ли символы соответствуют исходной строке и их количество равно нулю
for count in char_count.values():
if count != 0:
return "No"

# Если все условия выполнены, возвращаем "Yes"
return "Yes"

# Читаем входные данные
n, q = map(int, input().split())
original_str = input().strip()

# Обрабатываем каждый запрос и выводим ответы
for _ in range(q):
query_str = input().strip()
result = check_anagram(original_str, query_str)
print(result)


Этот код читает входные данные, обрабатывает каждый запрос, использует функцию `check_anagram` для проверки анаграммы, и выводит ответ на каждый запрос. Функция `check_anagram` реализует алгоритм, описанный выше.

Я надеюсь, что этот ответ был полезен и очень подробным! Если у вас возникли дополнительные вопросы, пожалуйста, не стесняйтесь задавать их. Удачи в решении задачи!