【学习现场】12对括号能组成多少合法括号串?

640?wx_fmt=png

小史是一个应届生,虽然学的是电子专业,但是自己业余时间每天都会坚持学习编程、计算机、互联网等相关方面的知识,特别是算法的训练。

今天小史又在研究一道算法题了。

【学习现场】

640?wx_fmt=jpeg

小史今天学习了括号的配对与合法性。

括号配对就是指左括号和右括号要成对出现,并且括号之间是可以嵌套的。

比如:

()()是合法的括号串

())(是不合法的括号串,因为第三位的右括号没有左括号与之配对。

如果有3对括号,那么总共可以形成5个合法括号串,分别是:

()()()

(())()

((()))

()(())

(()())

那么如果有12对括号,总共能形成多少个合法的括号串呢?

题目:12对括号能组成多少合法括号串?

题目要求:请编程计算出结果,如果数字过大,给出它对100007取模之后的结果。

小史拿到题目后略微思考,很快有了思路,开始写代码了。读者们,你能比小史更快吗?


学习现场的玩法:

1)计算机编程解决题目,答案在公众号后台进行回复,回复格式为解答+答案,如答案为2,则回复解答2

2)回答正确后,会出现提示,同时有一个交流群的二维码,可进入“场粉交流群”,群内都是算法爱好者和互联网从业人士

3)注意,每道题都有有效期,有效期过后题目作废,只能等待下一道题了

4)学习现场是小史平时练习的题目,下一道题公布的时候,同时会公布上一道题小史的解法供大家参考,也欢迎大家将自己的解法进行留言

5)希望大家玩得开心


上期回顾:

小史解答:

1、直接算出20181124的阶乘是可以的,但是数太大了

2、阶乘末尾的0是由因数10组成的,出现一个因数10就会出现一个0

3、因数10是由因数2和因数5组成的,2x5=10

4、所以只要算从1乘到20181124有多少个因数2和因数5,由于因数2肯定比因数5多,所以只要算因数5的个数就行

5、每隔5个数就有一个因数5,每隔25个数会有一个包含两个因数5的数,以此类推

想明白了上述过程,最终的程序是非常简单的。

FactorialZeros.java

/**
 * @author xiaoshi on 2018/11/24.
 */
public class FactorialZeros {

    public int calc(int n) {

        int result = 0;

        // 一直除5,直到没有5为止
        while(n / 5 > 0) {
            // 将5的因子相加
            result += n / 5;
            // n迭代
            n = n / 5;
        }

        return result;

    }

}

(友情提示:可左右滑动)

Main.java

/**
 * @author xiaoshi on 2018/11/24.
 */
public class Main {

    public static void main(String[] args) {

        FactorialZeros factorialZeros = new FactorialZeros();

        System.out.println(factorialZeros.calc(20181124));
        System.out.println(factorialZeros.calc(20181124) % 100007);

    }

}

(友情提示:可左右滑动)

运行结果:

5045274
44924


学习现场是互联网侦察继面试现场后推出的一个姊妹现场,旨在帮助读者进行算法题的训练,同时提供学习交流群,希望对大家的学习和算法提高有所帮助。

640?wx_fmt=jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值