7.15

Algorithm

generate-parentheses

   class Solution {
    public List<String> generateParenthesis(int n) {
        List<String> result = new ArrayList<>();
        StringBuilder parenthesis = new StringBuilder();
        int left = n ;
        int right = n ;
        buildParenthesis(result, parenthesis, left, right);
        return result; 
    }
    private void buildParenthesis(List<String> result, StringBuilder parenthesis, int left, int right) {
        if (left > 0) {
            buildParenthesis(result, parenthesis.append("("), --left, right);
            parenthesis.delete(parenthesis.length() - 1, parenthesis.length());
            ++left;
        }
        if (right > 0 && right > left) {
            buildParenthesis(result, parenthesis.append(")"), left, --right);
            parenthesis.delete(parenthesis.length() - 1, parenthesis.length());
            ++right;
        }
        if (right == 0) {
            result.add(parenthesis.toString());
            return;
        }
    }  
}

Review

Tip

map() 将流的元素映射成另一个类型
collect():对流的汇总操作,比如输出成List集合

Share

Java 8新特性(一):Lambda表达式