首页 > 代码库 > mini-parser

mini-parser

https://leetcode.com/problems/mini-parser//** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * public interface NestedInteger { *     // Constructor initializes an empty nested list. *     public NestedInteger(); * *     // Constructor initializes a single integer. *     public NestedInteger(int value); * *     // @return true if this NestedInteger holds a single integer, rather than a nested list. *     public boolean isInteger(); * *     // @return the single integer that this NestedInteger holds, if it holds a single integer *     // Return null if this NestedInteger holds a nested list *     public Integer getInteger(); * *     // Set this NestedInteger to hold a single integer. *     public void setInteger(int value); * *     // Set this NestedInteger to hold a nested list and adds a nested integer to it. *     public void add(NestedInteger ni); * *     // @return the nested list that this NestedInteger holds, if it holds a nested list *     // Return null if this NestedInteger holds a single integer *     public List<NestedInteger> getList(); * } */public class Solution {    public NestedInteger deserialize(String s) {        if (s.equals("")) {            return new NestedInteger();        }        if (s.startsWith("[")) {            return impl(s.substring(1, s.length()-1));        }        return new NestedInteger(Integer.parseInt(s));    }        private NestedInteger impl(String s) {        if (s.equals("")) {            return new NestedInteger();        }        char [] chList = s.toCharArray();        int wrap = 0;        int left = 0;        NestedInteger ret = new NestedInteger();        for (int i = 0; i < chList.length; i++) {            if (chList[i] == ‘[‘) {                wrap++;            }            else if (chList[i] == ‘]‘) {                wrap--;            }            else if (chList[i] == ‘,‘ && wrap == 0) {                ret.add(deserialize(s.substring(left, i)));                left = i + 1;            }        }        ret.add(deserialize(s.substring(left, chList.length)));        return ret;    }}

 

mini-parser