🗒️726. 原子的数量
2025-6-9
| 2025-6-9
0  |  阅读时长 0 分钟
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. 字符串解码 很像,感觉可以从后往前扫描,也是一种思路。

📎 参考

  • 【题单】常用数据结构(前缀和/差分/栈/队列/堆/字典树/并查集/树状数组/线段树)
  • 933. 最近的请求次数227. 基本计算器 II
    Loading...