京东笔试括号序列题 ac java版
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String line = sc.nextLine();
char[] in = line.toCharArray();
int[] right = new int[in.length / 2];
int index = 0;
int leftCount = 0;
for (int i = 0; i < in.length; i++) {
if (in[i] == '(') {
leftCount++;
}
if (in[i] == ')') {
right[index++] = leftCount;
}
}
int res = 1;
for (int i = 0; i < right.length; i++) {
res *= (right[i] - i);
}
System.out.println(res);
}
sc.close();
}
只要记录下每个右括号之前有几个左括号就行,即每个右括号在它前面的左括号取完之前一定要被取走。这就变成组合问题了
ps:求下神奇数这道题的思路,换了两种方法都没AC