Подсчёт атомов в химической формуле

Задача по программированию с проверкой онлайн

Сложность
Сложная
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Разбор и проверка данных
Стек, очередь, связные списки
Словари и множества

Дана правильная химическая формула. Название элемента — заглавная латинская буква, за которой может идти несколько строчных (H, Fe, Uuo). За элементом, а также за закрывающей скобкой может стоять натуральное число без ведущих нулей — количество (если числа нет, количество равно 1). Группа в круглых () или квадратных [] скобках умножается на число после скобки; скобки вкладываются друг в друга и закрываются скобкой того же вида. Кроме того, формула может состоять из нескольких частей, разделённых * (например, кристаллогидрат CuSO4*5H2O); * бывает только вне скобок, а часть может начинаться с натурального коэффициента, который умножает всю эту часть.

Посчитайте, сколько атомов каждого элемента во всей формуле, и верните строку: элементы в порядке возрастания названий (по кодам символов, так что C < Ca < Cl), после каждого — его общее количество, если оно больше 1.

Формула непустая, до 1000 символов; любое итоговое количество не больше 10⁹.

Пример: "K4[Fe(CN)6]" → "C6FeK4N6"; "CuSO4*5H2O" → "CuH10O9S".


Источник: задача CodeShare

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки