数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。
暴力破解
列出括号的组合情况,然后保存符合要求的String
package org.algorithm;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) {
System.out.println(generateParenthesis(4));
}
public static List<String> generateParenthesis(int n) {
char[] string = new char[2*n];
List<String> result = new ArrayList();
getAllString(string,0,result);
return result;
}
public static void getAllString(char[] chars,int position,List<String> result){
if(position == chars.length){
if(checkChar(chars)){
result.add(new String(chars));
}
}else{
chars[position] = '(';
getAllString(chars,position + 1,result);
chars[position] = ')';
getAllString(chars,position + 1,result);
}
}
public static boolean checkChar(char[] chars){
int flag = 0;
for(char c : chars){
if(c == '('){
flag++;
}else{
flag--;
}
if(flag < 0){
return false;
}
}
return flag == 0;
}
}