type
status
date
slug
summary
tags
category
icon
password
创建时间
Jun 9, 2025 09:50 AM
给你一个字符串化学式
formula
,返回 每种原子的数量 。原子总是以一个大写字母开始,接着跟随 0 个或任意个小写字母,表示原子的名字。
如果数量大于 1,原子后会跟着数字表示原子的数量。如果数量等于 1 则不会跟数字。
- 例如,
"H2O"
和"H2O2"
是可行的,但"H1O2"
这个表达是不可行的。
两个化学式连在一起可以构成新的化学式。
- 例如
"H2O2He3Mg4"
也是化学式。
由括号括起的化学式并佐以数字(可选择性添加)也是化学式。
- 例如
"(H2O2)"
和"(H2O2)3"
是化学式。
返回所有原子的数量,格式为:第一个(按字典序)原子的名字,跟着它的数量(如果数量大于 1),然后是第二个原子的名字(按字典序),跟着它的数量(如果数量大于 1),以此类推。
三、栈§3.5 表达式解析
今天是抄题解的一天。有点讨厌这种模拟题。
参考 力扣官方题解
一些边界情况的讨论
- 在扫描 Atom 时,单独处理首字母;
- 在扫描数字时,如果 Atom 后的字母不是数字或者超出边界条件了,那么就默认为 1;
操作上的注意事项:
- 遇到左括号
(
,压入一个空哈希表到栈顶
- 遇到右括号
)
,弹出栈顶元素,扫描括号后的数字,将其压入到新的栈顶元素中
这题和 394. 字符串解码 很像,感觉可以从后往前扫描,也是一种思路。