Leetcode 385. Mini Parser

    xiaoxiao2025-06-16  5

    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.

    // 这道题可以利用栈来解决 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(); } };
    转载请注明原文地址: https://ju.6miu.com/read-1300009.html
    最新回复(0)