美文网首页
平衡括号(三)——穿上马甲我就不认识你平衡括号了?

平衡括号(三)——穿上马甲我就不认识你平衡括号了?

作者: 旺叔叔 | 来源:发表于2018-10-31 17:32 被阅读0次

    LeetCode_385_MiniParser

    题目分析:

    分类,递归。
    注意cnt变量本质就是在利用平衡括号特性来作为分类依据。
    

    解法:

    public static NestedInteger deserialize(String s) {
        if (s.isEmpty()) return new NestedInteger();
        if (s.charAt(0) != '[') return new NestedInteger(Integer.valueOf(s));
        if (s.length() <= 2) return new NestedInteger();
        NestedInteger res = new NestedInteger();
        int start = 1, cnt = 0;
        for (int i = 1; i < s.length(); ++i) {
            if (cnt == 0 && (s.charAt(i) == ',' || i == s.length() - 1)) {
                res.add(deserialize(s.substring(start, i)));
                start = i + 1;
            } else if (s.charAt(i) == '[') ++cnt;
            else if (s.charAt(i) == ']') --cnt;
        }
        return res;
    }
    
    public static class NestedInteger {
        List<NestedInteger> childList;
        int val;
        // Constructor initializes an empty nested list.
        public NestedInteger(){
            this.childList = new LinkedList<>();
        }
        // Constructor initializes a single integer.
        public NestedInteger(int value){
            this.val = value;
        }
        // @return true if this NestedInteger holds a single integer, rather than a nested list.
        public boolean isInteger(){
            return 0 == childList.size();
        }
        // @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(){
            return val;
        }
    
        // Set this NestedInteger to hold a single integer.
        public void setInteger(int value){
            this.val = value;
        }
    
        // Set this NestedInteger to hold a nested list and adds a nested integer to it.
        public void add(NestedInteger ni){
            childList.add(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(){
            return childList;
        }

    相关文章

      网友评论

          本文标题:平衡括号(三)——穿上马甲我就不认识你平衡括号了?

          本文链接:https://www.haomeiwen.com/subject/idaatqtx.html