Leetcode 385. Mini Parser
来源:互联网 发布:国内硕士申请博士 知乎 编辑:程序博客网 时间:2024/05/23 01:25
题意
这题看题看了好久,不太理解题意。觉得Leetcode的难度在于理解题目上面。
题意是根据所给的字符串,解析出一个NestedInteger的对象。
解析的方式就是最简单的自动机。
因为很类似递归处理,所以用一个栈来维护每一层的NestedInteger。
然后返回最顶层的就行了。
(Leetcode代码收录](https://github.com/Mr-Phoebe/ACM-ICPC/tree/master/OJ/Leetcode),求粉求星星。
/** * // 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; NestedInteger* ans = NULL; int idx = 0; for(int i=0; i<s.size(); i++) { if(s[i] == '[') { stk.push(new NestedInteger()); if(!ans) ans = stk.top(); idx = i + 1; } else if(s[i] == ',') { if(idx != i) stk.top()->add(NestedInteger(stoi(s.substr(idx, i-idx)))); idx = i + 1; } else if(s[i] == ']') { if(idx != i) stk.top()->add(NestedInteger(stoi(s.substr(idx, i-idx)))); NestedInteger* cur = stk.top(); stk.pop(); if(!stk.empty()) stk.top()->add(*cur); idx = i + 1; } } return *ans; } };
0 0
- Leetcode 385. Mini Parser
- [leetcode] 385. Mini Parser
- LeetCode:385. Mini Parser
- Leetcode 385. Mini Parser
- Leetcode 385. Mini Parser
- Leetcode 385. Mini Parser
- [LeetCode]385. Mini Parser
- [leetcode]385. Mini Parser
- leetcode 385. Mini Parser
- LeetCode—385. Mini Parser
- Leetcode——385. Mini Parser
- [leetCode刷题笔记]385. Mini Parser
- [Leetcode] 385. Mini Parser 解题报告
- 【Leetcode】Mini Parser
- leetcode 385 Mini Parser
- Leetcode | Mini Parser
- leetcode 385 Mini Parser
- LeetCode.385 Mini Parser
- acm-图论的一些概念及性质
- 高手之路——Po学校学习笔记-第四课
- 梦想?初心?
- 约瑟夫的java实现
- 多系统单点登录(CAS整合)
- Leetcode 385. Mini Parser
- typedef 的用法
- JavaScript学习笔记--Date类型
- 邮箱发验证码
- POJ 1061青蛙的约会
- 数据库分库分表(sharding)系列(二) 全局主键生成策略
- 增长黑客
- 源码-spark运行流程分析
- CXF项目部署到WebSphere7上不兼容的解决方案