第一题只有40%,我的思路是求连续的左括号数量,然后算阶乘。
只扫描一遍,阶乘也做了缓存处理,应该不是复杂度的原因。
public class JD_1 { private static int[] map = new int[20]; public static void main(String[] args) {
Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) {
String seq = sc.nextLine(); char[] cseq = seq.toCharArray(); int cnt = 0; int res = 1; boolean flag = false;() for (int i = 0; i < cseq.length; i++) { if (cseq[i] == '(') {
flag = true; cnt++; } else if (cseq[i] == ')') { if (flag) {
res *= fib(cnt); cnt = 0; flag = false; }
}
}
System.out.println(res); }
} private static int fib(int n) { if (n == 1) return 1; if (map[n] != 0) return map[n]; else map[n] = n * fib(n-1); return map[n]; }
}
请问有什么问题