LeetCode 385. 迷你语法分析器(栈)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给定一个用字符串表示的整数的嵌套列表,实现一个解析它的语法分析器。

列表中的每个元素只可能是整数或整数嵌套列表

提示:你可以假定这些字符串都是格式良好的:

字符串非空
字符串不包含空格
字符串只包含数字0-9[-,]
示例 1:
给定 s = "324",
你应该返回一个 NestedInteger 对象,其中只包含整数值 324。示例 2:
给定 s = "[123,[456,[789]]]",
返回一个 NestedInteger 对象包含一个有两个元素的嵌套列表:1. 一个 integer 包含值 123
2. 一个包含两个元素的嵌套列表:i.  一个 integer 包含值 456ii. 一个包含一个元素的嵌套列表a. 一个 integer 包含值 789

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/mini-parser
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

/*** // 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[0] != '[')return NestedInteger(stoi(s));stack<NestedInteger> stk;string num;for(int i = 0; i < s.size(); ++i){if(s[i] == '[')stk.push(NestedInteger());else if(isdigit(s[i]) || s[i]=='-'){num += s[i];}else // , ]{if(!num.empty()){stk.top().add(NestedInteger(stoi(num)));num.clear();}if(s[i]==']' && stk.size()>1){NestedInteger t = stk.top();stk.pop();stk.top().add(t);}}}return stk.top();}
};

16 ms 11.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写一个函数取出php,写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名...

写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名例如: http://www.sina.com.cn/abc/de/fg.php?id1 需要取出 php 或 .php直接先上方法&#xff0c;主要用到两个函数 parse_url() 和basename() 函数返回路径中的文件名部分。function getExt($url){$arr parse_url…

php unicode 插入 mysql_关于MySQL的一些骚操作——提升正确性,抠点性能

推荐阅读&#xff1a;我凭借这份pdf拿下了蚂蚁金服、字节跳动、小米等大厂的offer概要回顾以前写的项目&#xff0c;发现在规范的时候&#xff0c;还是可以做点骚操作的。假使以后还有新的项目用到了MySQL&#xff0c;那么肯定是要实践一番的。为了准备&#xff0c;创建测试数据…

docker $PWD路径_Docker 技术系列之安装Redis单机版和集群版

欢迎关注刘哥讲技术。上一节我们讲到通过docker安装了多台的mysql&#xff0c;很简单&#xff0c;那么我们这一节&#xff0c;利用 Docker 在一台机器上部署多个 Redis 实例。那么redis是什么呢&#xff1f;Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持…

php转调页面,PHP中HTTP防盗链技术

盗链是指服务提供商自己不提供服务的内容&#xff0c;通过技术手段绕过其它有利益的最终用户界面(如广告)&#xff0c;直接在自己的网站上向最终用户提供其它服务提供商的服务内容&#xff0c;骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源&#xff0c;而真正…

LeetCode 1191. K 次串联后最大子数组之和(前缀和+分类讨论)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr 和一个整数 k。 首先&#xff0c;我们要对该数组进行修改&#xff0c;即把原数组 arr 重复 k 次。 举个例子&#xff0c;如果 arr [1, 2] 且 k 3&#xff0c;那么修改后的数组就是 [1, 2, 1, 2, 1, 2]。 然后&#x…

sql 拆分_实践参考:MySQL架构设计从开发规范、选型、拆分到减压实战指南

导引作者&#xff0c;李辉&#xff0c;原新浪爱彩票运维负责人&#xff0c;常用网名&#xff1a;门牙没了。曾主导新浪爱彩票的MySQL运维工作。培训合伙人、资深讲师&#xff0c;中国科学院大学在读研究生(大数据方向)&#xff0c;擅长大型项目的关系型数据库运维和管理&#x…

PowerBuilder调用.Net编译好的DLL

[ComVisible(true)][ClassInterface(ClassInterfaceType.AutoDual)][ProgId("HelloWorld.MyClass")] //类名public class MyClass{public string UserName { get; set; } //对外提供属性public string SayHello(string content) //对外提供方法{return "用户:&q…

python中流程图_python用graphviz画流程图

问题描述 项目中需要用到流程图&#xff0c;如果用js的echarts处理&#xff0c;不同层级建动态计算位置比较复杂&#xff0c;考虑用python来实现 测试demo实现效果如下完整代码 import yaml import os import ibm_db from graphviz import Digraph from datetime import dateti…

怎么读取matlab程序包,Nifti程序包,用于写入,读取和处理医学影像,适用于MATLAB

【实例简介】依赖于MATLAB,可以读取nii格式的文件,写入和操作输入的医学影像数据使用方法:1.下载压缩包并解压至MATLAB安装路径的toobox文件夹下 2.enjoy it!【实例截图】【核心代码】NIfTI_20140122├── affine.m├── bipolar.m├── bresenham_line3d.m├── clip_nii.…

天池 在线编程 牛郎织女(广度优先搜索)

文章目录1. 题目2. 解题1. 题目 描述 又到了七夕节&#xff0c;牛郎织女相约一起去一个n*m大小的迷宫maze里玩耍。 然而没过多久&#xff0c;他们就倒霉地走散了。 现在给定由.,*,S,T组成的矩阵maze&#xff0c; 其中.表示空地,*表示障碍物,S表示牛郎的位置 ,T表示织女的位置&…

BZOJ 1001 狼捉兔子

Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到&#xff0c;但抓兔子还是比较在行的&#xff0c;而且现在的兔子还比较笨&#xff0c;它们只有两个窝&#xff0c;现在你做为狼王&#xff0c;面对下面这样一个网格的地形&#xff1a; 左上角点…

python中怎么复制代码_Python对象怎么引用_Python对象怎么复制代码_一聚教程网

本次文章要给大家讲解的是Python对象引用及复制代码&#xff0c;相信这也是大家问题比较大的一个点&#xff0c;下面为大家具体整理了操作过程&#xff0c;一起来了解下。可以说Python没有赋值&#xff0c;只有引用。你这样相当于创建了一个引用自身的结构&#xff0c;所以导致…

python为什么是蟒蛇_Python 为什么推荐蛇形命名法?

关于变量的命名&#xff0c;这又是一个容易引发程序员论战的话题。如何命名才能更具有可读性、易写性与明义性呢&#xff1f;众说纷纭。 本期“Python为什么”栏目&#xff0c;我们将聚焦于变量命名中的连接方式&#xff0c;来切入这块是非之地&#xff0c;想要回答的问题是——…

可视化工具Navicat for MySQL-操作三

五、备份和还原MySQL数据库 在数据库的管理中&#xff0c;备份和还原是必须做认真做的事情&#xff0c;如果疏忽或者做粗糙了&#xff0c;那么一旦数据库故障后果不堪设想&#xff0c;所以Navicat同样也有备份和还原的功能&#xff0c;相比较创建功能&#xff0c;其备份功能则…

python mysql返回,python操作mysql数据-执行语句返回值直接返回字典类型

fetchall()将结果放在二维数组里面&#xff0c;每一行的结果在元组里面import pymysqldef export(table_name):conn pymysql.connect(host 118.24.3.40,user jxz,password,dbjxz,port3306,charset utf8)cur conn.cursor()cur.execute(select * from %s%table_name)print(cu…

如何在python中打开文件_Python文件处理:创建、打开、追加、读、写

在Python中&#xff0c;不需要导入外部库来读取和写入文件。Python为创建、写入和读取文件提供了内置的函数。 在本文中&#xff0c;我们将学习 如何创建文本文件 如何将数据附加到文件中 如何读取文件 如何逐行读取文件 Python中的文件模式 如何创建文本文件 使用Python&#…

python中response.text_Sanic response text() 函数用法和示例

response.text() 功能&#xff1a;Sanic 返回纯文本内容给浏览器。作为一个完整功能的web网站&#xff0c;一般是不会返回纯文本内容的&#xff0c;特殊情况下可选择使用本函数。response.text() 语法def text(body,status200, headersNone,content_type"text/plain;chars…

天池 在线编程 排名查询

文章目录1. 题目2. 解题1. 题目 描述 给一个二维数组scores表示每个学生的各科成绩&#xff0c;求出学生中总成绩排名第K的索引。 如果成绩一样&#xff0c;越早出现的排名越高。 0 < scores[i][j] < 100 示例&#xff1a; 输入: scores: [[90, 80, 70], [90, 90, 90],…

matlab处理亮度不均匀,校正亮度不均匀问题并分析前景对象

预处理图像将图像读入工作区。I imread(rice.png);imshow(I)图像中心的背景亮度比底部亮度高。预处理图像&#xff0c;使背景亮度更加均匀。第一步&#xff0c;使用形态学开运算删除所有前景(米粒)。开运算会删除无法完全包含结构元素的小对象。定义半径为 15 的盘形结构元素&…

[CentOS] 打造vim环境

安装vim yum install vim-enhanced 安装git rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpmyum install git 安装bundle插件 git clone https://github.com/gmarik/vundle.git /data/vim/bundle/vundle 配置vim vim /etc/vimrc 在文件…