一、题目
二、代码
长度为 n
的序列就是在长度为 n-1
的序列前加一个 '('
或 ')'
class Solution {
List<String> result = new ArrayList<>();
public List<String> generateParenthesis(int n) {
int index = 0;
generateParenthesis_(new char[2 * n], index);
return result;
}
public void generateParenthesis_(char[] parenthesis, int index){
if(index == parenthesis.length){
if(valid(parenthesis)){
result.add(new String(parenthesis));
return;
}
}else{
parenthesis[index] = '(';
generateParenthesis_(parenthesis, index + 1);
parenthesis[index] = ')';
generateParenthesis_(parenthesis, index + 1);
}
}
public boolean valid(char[] current) {
int balance = 0;
for (char c: current) {
if (c == '(') balance++;
else balance--;
if (balance < 0) return false;
}
return (balance == 0);
}
}