栈-E1021-删除最外层的括号

2019-04-27  本文已影响0人  三次元蚂蚁

题目

思路

代码

class Solution {
    public String removeOuterParentheses(String S) {
        if (S == null || S.length() == 0) {
            return "";
        }
        
        LinkedList<Integer> stack = new LinkedList<>();
        boolean[] remains = new boolean[S.length()];
        int top;
        StringBuilder result = new StringBuilder();
        
        Arrays.fill(remains, true);
        stack.push(0);
        remains[0] = false;
        for (int i = 1; i < S.length(); ++i) {
            switch (S.charAt(i)) {
                case '(':
                    stack.push(i);
                    break;
                case ')':
                    top = stack.pop();
                    if (stack.size() == 0) {
                        remains[i] = false;
                        remains[top] = false;
                    }
                    break;
            }
        }
        
        for (int i = 0; i < S.length(); ++i) {
            if (remains[i]) {
                result.append(S.charAt(i));
            }
        }
        
        return result.toString();
    }

}
上一篇 下一篇

猜你喜欢

热点阅读