一、递归
//在上一个的基础上,加在左边,右边,包含,以Set存储
public class 合法括号_递归 {
public static void main(String[] args) {
System.out.println(brackets(3));
}
static Set<String> brackets(int n){
Set<String> set=new HashSet<>();
if(n==1) {
set.add("()");
return set;
}
Set<String> old_set=brackets(n-1);
for(String s:old_set) {
set.add("()"+s);
set.add(s+"()");
set.add("("+s+")");
}
return set;
}
}
二、迭代
public class 合法括号_迭代 {
public static void main(String[] args) {
System.out.println(brackets(3));
}
static Set<String> brackets(int n){
Set<String> set=new HashSet<>();
set.add("()");
if(n==1)
return set;
for(int i=2;i<=n;i++) {
Set<String> new_set=new HashSet<>();
for(String s:set) {
new_set.add("()"+s);
new_set.add(s+"()");
new_set.add("("+s+")");
}
set= new_set;
}
return set;
}
}