第一题只有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]; } } 请问有什么问题
点赞 6
牛客网
牛客企业服务