385.迷你语法分析器
给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器。
列表中的每个元素只可能是整数或整数嵌套列表
提示:你可以假定这些字符串都是格式良好的:
- 字符串非空
- 字符串不包含空格
- 字符串只包含数字
0-9
,[
,-
,
,]
示例 1:
给定 s = "324",你应该返回一个 NestedInteger 对象,其中只包含整数值 324。
示例 2:
给定 s = "[123,[456,[789]]]",返回一个 NestedInteger 对象包含一个有两个元素的嵌套列表:1. 一个 integer 包含值 123
2. 一个包含两个元素的嵌套列表:i. 一个 integer 包含值 456ii. 一个包含一个元素的嵌套列表a. 一个 integer 包含值 789
/**
* // This is the interface that allows for creating nested lists.
* // You should not implement it, or speculate about its implementation
* class NestedInteger {
* public:
* // Constructor initializes an empty nested list.
* NestedInteger();
*
* // Constructor initializes a single integer.
* NestedInteger(int value);
*
* // Return true if this NestedInteger holds a single integer, rather than a nested list.
* bool isInteger() const;
*
* // Return the single integer that this NestedInteger holds, if it holds a single integer
* // The result is undefined if this NestedInteger holds a nested list
* int getInteger() const;
*
* // Set this NestedInteger to hold a single integer.
* void setInteger(int value);
*
* // Set this NestedInteger to hold a nested list and adds a nested integer to it.
* void add(const NestedInteger &ni);
*
* // Return the nested list that this NestedInteger holds, if it holds a nested list
* // The result is undefined if this NestedInteger holds a single integer
* const vector<NestedInteger> &getList() const;
* };
*/
class Solution {
public:
NestedInteger deserialize(string s) {
if (s.empty()) return NestedInteger();
if (s[0] != '[') return NestedInteger(stoi(s));
if (s.size() <= 2) return NestedInteger();
NestedInteger res;
int start = 1, cnt = 0;
for (int i = 1; i < s.size(); ++i) {
if (cnt == 0 && (s[i] == ',' || i == s.size() - 1)) {
res.add(deserialize(s.substr(start, i - start)));
start = i + 1;
} else if (s[i] == '[') ++cnt;
else if (s[i] == ']') --cnt;
}
return res;
}
};
385.迷你语法分析器相关推荐
- Java实现 LeetCode 385 迷你语法分析器
385. 迷你语法分析器 给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器. 列表中的每个元素只可能是整数或整数嵌套列表 提示:你可以假定这些字符串都是格式良好的: 字符串非空 字符串 ...
- LeetCode 385. 迷你语法分析器(栈)
文章目录 1. 题目 2. 解题 1. 题目 给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器. 列表中的每个元素只可能是整数或整数嵌套列表 提示:你可以假定这些字符串都是格式良好的: ...
- 385. 迷你语法分析器
给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器. 列表中的每个元素只可能是整数或整数嵌套列表 提示:你可以假定这些字符串都是格式良好的: 字符串非空 字符串不包含空格 字符串只包含数 ...
- leetcode 385. Mini Parser | 385. 迷你语法分析器(Java)
题目 https://leetcode.com/problems/mini-parser/ 题解 只要有耐心分析清楚每一种状态就可以啦. /*** // This is the interface t ...
- leetcode 385. 迷你语法分析器
题目链接 思路:递归 分析:这个题主要在于要看懂题目意思,这个NestedInteger对象里面就是套了一个NestedInteger对象. 很明显,这是个嵌套的定义,那么我们可以用递归的思路来实现. ...
- LR(1)语法分析器生成器(生成Action表和Goto表)java实现(二)
updata : 附我之前bilibili讲解视频链接 : https://www.bilibili.com/video/av63666423?share_medium=android&sha ...
- 递归下降文法C语言实验报告,递归下降语法分析器实验报告.doc
递归下降语法分析器实验报告 编译原理实验报告 题目: 递归下降语法分析器 学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 宁剑 指导教师 ...
- PHP语法分析器:RE2C BISON 总结
在这之前,我曾经尝试过一个项目,就是将我们的PHP代码自动生成so扩展, 编译到PHP中,我叫它 phptoc. 但是由于各种原因,暂停了此项目. 写这篇文章一是因为这方面资料太少,二是把自己的收获总 ...
- 编译原理 - 实验三 - 递归下降语法分析器的调试及扩展
一. 语法分析介绍 语法分析是编译过程的核心部分,它的主要任务是按照程序语言的语法规则,从由词法分析输出的源程序符号串中识别出各类语法成分,同时进行语法检查,为语义分析和代码生成做准备.执行语法分析任 ...
- java实现语法分析器_语法分析 | 语法分析的任务
在之前,我们有对编译器做过一定的介绍,我们认为编译器是具有一定流水线结构的软件系统.它可以分为前端,中端和后端这样的不同的阶段. 编译器前端 对于我们正在研究的前端,我们已经通过词法分析的学习掌握了从 ...
最新文章
- Spring Boot 中的 @EnableAutoConfiguration 是如何处理的?
- 娃哈哈信息部李钒助阵FBS2017 共探食品饮料信息化之路
- 语音信号处理MATLAB实现
- 小白如何购买阿里云服务器(2019最详细教程)
- ROS 发布kitti数据集的gps信息
- 生成费氏数列 -思维训练for
- word中删除分节符时页面格式会发生改变
- 如何形象的理解泰勒展开
- 方差为什么用平方不用绝对值,为什么要对差值求平方而不是取标准偏差的绝对值?...
- Java Web基础
- Linux中service文件详解
- Loading mirror speeds from cached hostfile
- 工业级光纤收发器的芯片介绍
- java html合并单元格内容居中显示_合并Al:H1单元格区域,使合并的内容居中显示。...
- MATLB|基于matpower优化调度的风力模型预测
- 湖北武汉资料员培训资料员在建筑工程中的作用建筑七大员培训
- javascript脚本语言电子书大全免费下载
- C#下载文件:WebClient
- FAT16和FAT32文件定位
- 国际信用卡收款——跨境拒付!
热门文章
- 5星评价,1位小数显示
- SharePoint 2013 Error - File names can't contain the following characters: ? # {} % ~ / \.
- cisco用户隔离配置
- Hibernate 懒加载 Unable to evaluate the expression Method threw ‘org.hibernate.LazyInitializationExcept
- 乐迪机器人正确操作_乐迪智能早教机器人好用吗 乐迪智能早教机器人使用测评...
- Linux学习笔记6 - 用户和组群账户管理
- 安装高版本的java_运行“需要Java 11或更高版本”的Visual Studio代码。请下载并安装最新的JDK”...
- rabbitmq python 发送失败_RabbitMQ Python端发送消息给Java端 接受消息全数字问题
- 计算机丢失disrupt,disrupt造句
- 能运行c语言的最便宜电脑配置,低配置电脑流畅运行Win7的技巧