java recursive solution


  • 0
    2
    /**
     * // 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.charAt(0) != '[') {
                return new NestedInteger(Integer.parseInt(s));
            }
            NestedInteger ni = new NestedInteger();
            int lo = 1;
            int bracket = 1;
            for (int i = 1; i < s.length(); i++) {
                if (s.charAt(i) == '[') {
                    bracket++;
                }
                else if (s.charAt(i) == ']') {
                    bracket--;
                }
                else if (s.charAt(i) == ',' && bracket == 1) {
                    ni.add(deserialize(s.substring(lo, i)));
                    lo = i + 1;
                }
            }
            if (lo < s.length() - 1) {
                ni.add(deserialize(s.substring(lo, s.length() - 1)));
            }
            return ni;
        }
    }
    

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.