Задача понятна: данна строка (или несколько строк) содержит только заглавные буквы и пробелы. Нужно вывести букву с наименьшим и наибольшим порядковым номером в алфавите (A = 1, Z = 26) среди букв строки. Пробелы игнорируем. Результат — две буквы через пробел: min max.
Как решить шаг за шагом:
- Для каждой тестовой строки взять только заглавные буквы A–Z.
- Если таких букв нет, выводим пустую строку (случай не должен встречаться в задачах, но можно защититься на всякий случай).
- Найти минимальную и максимальную буквы по их символьному порядку в языке (min и max над списком букв).
- Вывести их через пробел.
Особенности обработки входа:
- Иногда в тестах сначала может быть число тестов T, после которого идут T строк. Чтобы быть гибким, программа пытается распознать первый ввод как целое число и обрабатывает соответствующее количество строк. Если первый ввод не число, рассматривает весь ввод как одну тестовую строку или обрабатывает каждую строку отдельно.
Пример работы:
- HELLO WORLD -> D W
- AAAAAAAA -> A A
Ниже приведён рабочий пример решения на Python 3.
Python 3
def solve(): import sys data = sys.stdin.read().splitlines() if not data: return
lines = data
test_lines = []
first = lines[0].strip()
# Попытка распознать число тестов
if first.isdigit():
t = int(first)
# Берём следующие t строк (если их меньше, берём сколько есть)
test_lines = lines[1:1+t]
else:
# Без числа тестов: рассматриваем все строки как тесты
test_lines = lines
out_lines = []
for s in test_lines:
letters = [c for c in s if 'A' <= c <= 'Z']
if not letters:
out_lines.append('')
continue
mn = min(letters)
mx = max(letters)
out_lines.append(f"{mn} {mx}")
sys.stdout.write("\n".join(out_lines))
if name == "main": solve()
Пояснение по сложности:
- Время выполнения O(n) по длине входной строки (с учётом всех тестов).
- Память O(1) помимо входных данных, кроме хранения самой строки и пары символов min/max.