Count elements in a chemical molecular formula.
Examples:
H2O
{"H": 2, "O": 1}
H2(CO2)2
{"H": 2, "C": 2, "O": 4}
K4(ON(SO3)2)2C5
{"K": 4, "O": 14, "N": 2, "S": 4, "C": 5}
这道题要求解析一个化学分子式,并统计每种原子出现的总次数。核心难点在于处理括号嵌套以及括号后的倍数:可以用栈按层维护当前作用域中的元素计数,遇到左括号时开启新层,遇到右括号时将这一层的统计结果乘上系数后合并回上一层,再继续累加后续元素。为了正确解析元素名和数字,需要逐字符扫描,大写字母开头的元素符号以及其后可能出现的多位数字。
正文完