385. 迷你语法分析器
2022/4/15 23:42:34
本文主要是介绍385. 迷你语法分析器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
给定一个字符串 s 表示一个整数嵌套列表,实现一个解析它的语法分析器并返回解析的结果 NestedInteger 。
列表中的每个元素只可能是整数或整数嵌套列表
示例 1:
输入:s = "324",
输出:324
解释:你应该返回一个 NestedInteger 对象,其中只包含整数值 324。
示例 2:
输入:s = "[123,[456,[789]]]",
输出:[123,[456,[789]]]
解释:返回一个 NestedInteger 对象包含一个有两个元素的嵌套列表:
- 一个 integer 包含值 123
- 一个包含两个元素的嵌套列表:
i. 一个 integer 包含值 456
ii. 一个包含一个元素的嵌套列表
a. 一个 integer 包含值 789
提示:
1 <= s.length <= 5 * 104
s 由数字、方括号 "[]"、负号 '-' 、逗号 ','组成
用例保证 s 是可解析的 NestedInteger
输入中的所有值的范围是 [-106, 106]
思路:
从左至右遍历 ss,如果遇到 ‘[’,则表示是一个新的 NestedInteger 实例,需要将其入栈。如果遇到 '} 或 ‘,’,则表示是一个数字或者 NestedInteger 实例的结束,需要将其添加入栈顶的 NestedInteger 实例。最后需返回栈顶的实例。
方法一:使用栈
/** * NestedInteger(序列):{ * NestedInteger(数字):1 * NestedInteger(序列):{ * NestedInteger(数字):2 * NestedInteger(数字):3 * } * NestedInteger(数字):4 * } * @param s * @return */ public NestedInteger deserialize(String s) { if (s.charAt(0) != '[') { return new NestedInteger(Integer.parseInt(s)); } Deque<NestedInteger> stack = new ArrayDeque<>(); int num = 0; boolean negative = false; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '-') { negative = true; } else if (Character.isDigit(c)) { num = num * 10 + c - '0'; } else if (c == '[') { stack.push(new NestedInteger()); } else if (c == ',' || c == ']') { if (Character.isDigit(s.charAt(i - 1))) { if (negative) { num *= -1; } stack.peek().add(new NestedInteger(num)); } num = 0; negative = false; if (c == ']' && stack.size() > 1) { NestedInteger ni = stack.pop(); stack.peek().add(ni); } } } return stack.pop(); }
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/mini-parser
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这篇关于385. 迷你语法分析器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide