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

  • 相关阅读:
    Leetcode Python笔记
    Jenkins 自动化构建基于svn的vue项目 ,以及uniapp的H5项目
    Jenkins 持续化部署
    java中的各种锁详细介绍
    Maven私有仓库搭建 Nexu3
    Spring Cloud构建微服务架构(一)服务注册与发现
    SpringCloud学习笔记(开篇)
    介绍一款 redis 可视化工具
    java 在线网络考试系统源码 springboot mybaits vue.js 前后分离跨域
    java OA办公系统源码 Springboot Activiti工作流 vue.js 前后分离 集成代码生成器
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8849287.html
Copyright © 2011-2022 走看看