Leetcode 385. Mini Parser

来源:互联网 发布:e博乐网络 编辑:程序博客网 时间:2024/05/20 18:43

Given a nested list of integers represented as a string, implement a parser to deserialize it.

Each element is either an integer, or a list -- whose elements may also be integers or other lists.

Example 1:

Given s = "324",You should return a NestedInteger object which contains a single integer 324.
Example 2:

Given s = "[123,[456,[789]]]",Return a NestedInteger object containing a nested list with 2 elements:1. An integer containing value 123.2. A nested list containing two elements:    i.  An integer containing value 456.    ii. A nested list with one element:         a. An integer containing value 789.

<span style="font-size:18px;">这道题可以利用栈来解决</span>
</pre><pre name="code" class="cpp">
</pre><pre name="code" class="cpp">class Solution {public:NestedInteger deserialize(string s) {if (s.empty()) return NestedInteger();if (s[0] != '[') return NestedInteger(std::stoi(s));stack<NestedInteger> stk;for (int i = 0, j = 0; i < s.size(); ++i){if (s[i] == '['){stk.push(NestedInteger());j = i + 1;}else if (s[i] == ','){if (s[i - 1] >= '0' && s[i - 1] <= '9')stk.top().add(NestedInteger(std::stoi(s.substr(j, i - j))));j = i + 1;}else if (s[i] == ']'){if (s[i - 1] >= '0' && s[i - 1] <= '9')stk.top().add(NestedInteger(std::stoi(s.substr(j, i - j))));if (stk.size() > 1){NestedInteger & e = stk.top();stk.pop();stk.top().add(e);}// may be [123, [456], [789]]j = i + 1;}}return stk.top();}};



                                             
0 0
原创粉丝点击