zoukankan      html  css  js  c++  java
  • 385 Mini Parser 迷你解析器

    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.
    Note: You may assume that the string is well-formed:
        String is non-empty.
        String does not contain white spaces.
        String contains only digits 0-9, [, - ,, ].
    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.
    详见:https://leetcode.com/problems/mini-parser/description/

    C++:

    /**
     * // 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 cnt=0;
            int start=1;
            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;
        }
    };
    

     参考:https://www.cnblogs.com/grandyang/p/5771434.html

  • 相关阅读:
    Unity错误提示大全(遇到问题就更新)
    使用log4Net输出调试信息
    3.创建Manager类,演示对TestUser进行增删改查功能
    2.创建NHibernateHelper帮助类,生成sessionFactory
    1.使用FluentNHibemate 操作数据库,添加映射到数据库
    MySql介绍与安装
    搭建unity客户端
    搭建服务器端
    Photon介绍与安装
    简练软考知识点整理-实施定量风险分析
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8849287.html
Copyright © 2011-2022 走看看