寻找合法的字符串……6
https://www.nowcoder.com/questionTerminal/604237159872420892bc0fa3eed68d0c
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
class Solution {
public List<String> generateParenthesis(int n) {
List<String> ans = new ArrayList<>();
genAll(new char[2 * n], 0, ans);
return ans;
}
void genAll(char[] current, int pos, List<String> ans) {
if (pos == current.length) {
if (valid(current)) ans.add(new String(current));
} else {
current[pos] = '(';
genAll(current, pos + 1, ans);
current[pos] = ')';
genAll(current, pos + 1, ans);
}
}
boolean valid(char[] current) {
int balance = 0;
for (char c : current) {
if (c == '(') balance++;
if (c == ')') balance--;
if (balance < 0) return false;
}
return balance == 0;
}
}
public class Main {
static private Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
Solution solution = new Solution();
int n = sc.nextInt();
List<String> a = solution.generateParenthesis(n);
Iterator<String> it = a.iterator();
while (it.hasNext()){
System.out.format("%s%s", it.next(), it.hasNext()? "," : "\n");
}
}
}