Подсчёт атомов в химической формуле
Задача по программированию с проверкой онлайн
- Сложность
- Сложная
- Языки
- 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