千问 LeetCode 726.原子的数量 public String countOfAtoms(String formula)
你提到的 public String countOfAtoms(String formula) 是 LeetCode 上的一道经典字符串解析题(LeetCode 726. Number of Atoms)。题目要求解析一个化学式字符串(如 “H2O”、“Mg(OH)2”、“K4(ON(SO3)2)2”),并返回其中每种原子的数量,按字典序排列。// 使用 TreeMap 自动按字典序排序。如果你需
·
你提到的 public String countOfAtoms(String formula) 是 LeetCode 上的一道经典字符串解析题(LeetCode 726. Number of Atoms)。题目要求解析一个化学式字符串(如 “H2O”、“Mg(OH)2”、“K4(ON(SO3)2)2”),并返回其中每种原子的数量,按字典序排列。
下面是一个完整的 Java 解法,使用 栈 + TreeMap(自动排序) 实现:
import java.util.*;
public class Solution {
public String countOfAtoms(String formula) {
Stack> stack = new Stack();
stack.push(new TreeMap()); // 使用 TreeMap 自动按字典序排序
int i = 0, n = formula.length();
while (i ());
i++;
} else if (c == ')') {
Map top = stack.pop();
i++; // 跳过 ')'
// 解析后面的数字
int num = 0;
while (i entry : stack.peek().entrySet()) {
sb.append(entry.getKey());
if (entry.getValue() > 1) {
sb.append(entry.getValue());
}
}
return sb.toString();
}
}
示例:
- 输入:“H2O” → 输出:“H2O”
- 输入:“Mg(OH)2” → 输出:“H2MgO2”
- 输入:“K4(ON(SO3)2)2” → 输出:“K4N2O14S4”
关键点说明:
- 使用 栈 来处理嵌套括号。
- 每一层括号内的原子计数存在一个 Map 中。
- 遇到 ) 时,弹出当前层,乘以后面的数字,加到上一层。
- 使用 TreeMap 保证最终输出按原子名字典序排列。
如果你需要 Python 版本或其他语言实现,也可以告诉我!
更多推荐




所有评论(0)